我不尝试用YYYY-MM-DD或dd / MM / YYYY格式化日期。我在问 LocalDate的字面格式。
我刚开始学习Java,并且正在使用称为BlueJ的IDE。我想 创建一个测试方法。
屏幕截图将显示我正在尝试做的事情 忽略底部的错误部分
现在,从构造函数开始,我们知道它需要一个int,LocalDate和一个 double。我在网上搜索后发现
https://www.javabrahman.com/java-8/java-8-working-with-localdate-localtime- localdatetime-tutorial-with-examples /
java.time.LocalDate: 在ISO- 86011日历系统中,LocalDate实例保存一个不带时区的日期。LocalDate具有默认格式’YYYY-MM-DD’, 如‘2016-12-12’中一样。
因此,我将一个普通数字放在10001中作为testID,并将double 变成50.5之类的东西,我也知道要注册一个字符串(如果 需要),我需要将其括在“字符串”中
但是我已经尝试了各种方式输入日期,但我会遇到一个 错误
2018-05-30,30-05-2018,30 / 05/2018将给我
Error: incompatible types: Int cannot be converted to java.time.LocalDate
“30/05/2018” on the other hand would give me
Error: Incompatible types: java.lang.String cannot be converted to java.time.LocalDate
If I try 30.05.2018 it would say
Error: ';' expected
If I try ‘2018-05-30’ it would say
Error: unclosed character literal
我没有办法尝试。因此,如果您能告诉我如何将其放入 其中,那就太好了。
我只是真的需要知道BlueJ如何让我输入它。因为 BlueJ的资源在线如此稀疏。
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; }
如评论中所述,解决方案是添加创建的代码 LocaDate,但是bluej需要带有包 前缀“ java.time”的标准类名:
java.time.LocalDate.of(2018, 5, 30)
不知道为什么它不仅仅适用于LocalDate.of(…)(甚至与 导入的correclty类一起使用),但至少可以奏效。
只是另一个细节:日期没有 格式。 诸如此类的类LocalDate仅包含值(在这种情况下,它具有年,月 和日的值),但日期本身根本没有格式。同日可以 在许多不同的格式表示:May 30th 2018,2018-05-30, 30/05/18有不同的格式,但都代表相同的日期。日期 对象仅包含值,并且您可以选择想要 表示它的任何格式。
当您打印时LocalDate,它会隐式调用toString(), 默认情况下会选择yyyy-MM-dd格式,即ISO 8601格式,但是正如我所说,这 只是格式化日期的多种可能方式之一(尽管值始终 保持不变)。告诉“日期具有格式”是错误的并且具有误导性。