2017-08-25 9 views
1

Je n'essaie pas de formater la date en AAAA-MM-JJ ou jj/mm/aaaa. Je demande à propos du format littéral de LocalDate.Comment entrer une valeur LocalDate dans la boîte de dialogue BlueJ "Créer un objet"

Je viens de commencer à apprendre Java et j'utilise cet IDE appelé BlueJ. et je veux créer une méthode de test.

La capture d'écran montrera ce que je suis en train de faire Ignore the Error part at the bottom

depuis maintenant du constructeur, nous savons qu'il a besoin d'un int, LocalDate et un double. J'ai cherché en ligne et a constaté que

https://www.javabrahman.com/java-8/java-8-working-with-localdate-localtime-localdatetime-tutorial-with-examples/

java.time.LocalDate: A LocalDate instance holds a date without a time zone, in ISO-86011 calendar system. LocalDate has the default format ‘YYYY-MM-DD’ as in ‘2016-12-12’.

Je mettrais un nombre normal à 10001 pour le testID et double serait quelque chose comme 50,5 Je sais aussi que pour elle d'enregistrer une chaîne (si elle était nécessaire) je aurais besoin de le faire dans « string »

Mais j'ai essayé toutes sortes de façon de mettre la date et je serais parti avec une erreur

2018-05-30,30-05 -2018,30/05/2018 me donnerait

Error: incompatible types: Int cannot be converted to java.time.LocalDate 

"30/05/2018" d'autre part me donnerait

Error: Incompatible types: java.lang.String cannot be converted to java.time.LocalDate 

Si j'essaie 30/05/2018 il dire

Error: ';' expected 

Si j'essaye '30.05.2018' il dirait

Error: unclosed character literal 

J'ai manqué de façons de l'essayer. Donc, si vous pouviez me dire comment je devrais le mettre là, ce serait génial.

J'ai juste vraiment besoin de savoir comment BlueJ veut que je le saisisse. Parce que les ressources pour BlueJ sont si rares en ligne.


code:

import java.time.LocalDate; 
import java.util.ArrayList; 
/** 
* Write a description of class TestPaper here. 
* 
* @author (your name) 
* @version (a version number or a date) 
*/ 
public class TestPaper 
{ 
    // instance variables - replace the example below with your own 
    private int testID; 
    private LocalDate testDate; 
    private double testMarks; 
    private ArrayList<MCQ> MCQDetails; 

    /** 
    * Constructor for objects of class TestPaper 
    */ 
    public TestPaper(int testID, LocalDate testDate, double testMarks) 
    { 
     this.testID = testID; 
     this.testDate = testDate; 
     this.testMarks = testMarks; 
     MCQDetails = new ArrayList<MCQ>() ; 
    } 

/** 
* Accessor Method getTestID to get the testID 
* 
* @return int value of the choice ID 
*/ 
public int getTestID(){ 
    return testID; 
} 

/** 
* Mutator Method to set the testID 
* 
* @param int format of the testID to set 
*/ 
public void setTestID(int testID){ 
    this.testID = testID; 
} 

/** 
* Accessor Method getTestMarks to get the Test Marks 
* 
* @return double value of the test marks 
*/ 
public double getTestMarks(){ 
    return testMarks; 
} 

/** 
* Mutator Method to set the testMarks 
* 
* @param String format of the choice Description to be set 
*/ 
public void setTestMarks(double testMarks){ 
    this.testMarks = testMarks; 
} 

    /** 
* Accessor Method getTestDate to get the testDate 
* 
* @return LocalDate value of the testDate 
*/ 
public LocalDate getTestDate(){ 
    return testDate; 
} 

/** 
* Mutator Method to set the testDate 
* 
* @param LocalDate format of the testDate to set 
*/ 
public void setTestDate(LocalDate testDate){ 
    this.testDate = testDate; 
} 

/** 
* Method addMCQ will allow users to add a MCQ Object to the list of MCQ 
* 
* @param addMCQ a MCQ Object 
* @return boolean will return true if it is successfully added or false if not 
*/ 
public boolean addMCQ(MCQ MCQName) 
{ 
    return MCQDetails.add(MCQName); 
} 

/** 
* Method removeMCQ to remove an MCQ object from the Arraylist 
* 
* @param MCQName A parameter of type MCQ 
*/ 
public void removeMCQ(MCQ MCQName) 
{ 
    MCQDetails.remove(MCQName); 
} 

/** 
* Method listMCQ to return a list of MCQ arraylist 
* 
* @return The return value of MCQDetails (MCQ Arraylist) 
*/ 
public ArrayList<MCQ> listMCQ() 
{ 
    return MCQDetails; 
} 

    public MCQ findMCQ(int MCQID) 
{ 
    for(MCQ m : MCQDetails) 
    { 
     if(m.getQuestionID() == MCQID) 
     { 
      return m; 
     } 
    } 
    return null; 
} 
+0

où est le code qui implémente tout cela? – nullpointer

+0

Je vais l'ajouter maintenant.C'est juste un programme simple vraiment. –

+0

Je n'utilise pas bluej, donc je ne sais pas quel type d'expression il accepte. Pouvez-vous mettre du code comme 'LocalDate.of (2018, 5, 30)'? Ou une chaîne '" 2018-05-30 "' (pas sûr si vous avez déjà essayé des guillemets doubles)? –

Répondre

0

Inclure package

Comme il est indiqué dans les commentaires, la solution est d'ajouter le code qui crée le LocaDate, mais les besoins BlueJ le nom complet de la classe avec le préfixe package « java.time. »:

java.time.LocalDate.of(2018, 5, 30) 

Je ne sais pas pourquoi il ne fonctionne pas avec juste LocalDate.of(...) (même avec la classe correclty importée), mais au moins cela fonctionne.


Juste un autre détail: a date has no format. Les classes comme LocalDate ne contiennent que des valeurs (dans ce cas, elles ont des valeurs d'année, de mois et de jour), mais une date elle-même n'a aucun format. La même date peut être représentée dans de nombreux formats différents: May 30th 2018, 2018-05-30, 30/05/18 sont différents formats, mais tous représentent la même date. Un objet date ne contient que les valeurs et vous pouvez choisir le format que vous voulez pour le représenter.

Lorsque vous imprimez un LocalDate, il implicitement appelle toString(), qui, par défaut choisit le format yyyy-MM-dd, qui est un format ISO 8601, mais comme je le disais, c'est juste l'une des nombreuses façons de mettre en forme une date (bien que la valeur toujours reste le même). Dire que "une date a un format" est faux et trompeur.

+1

Ouais je ne sais pas pourquoi BlueJ doit le prendre comme java.time.LocalDate.of (2018, 5, 30) mais bon, je suis content que ça a marché. m'a pris quelques heures pour le comprendre. Merci encore –

0

Essayez de convertir le LocalDate dans l'appel, tels que:

TestPaper (2018-05-30, LocalDate.parse("2018/05/30"), 30/05/2018); 

Il existe d'autres méthodes statiques dans LocalDate vous pouvez utiliser. Voir here pour plus d'exemples.

De votre commentaire ci-dessus, ne pas oublier votre importation:

import java.time.LocalDate;