如何在BlueJ“创建对象”对话框中输入LocalDate值
我并不是想要在YYYY-MM-DD或dd/MM/YYYY格式化日期。我在询问LocalDate的字面格式。如何在BlueJ“创建对象”对话框中输入LocalDate值
我刚开始学习Java,我正在使用这个名为BlueJ的IDE。我想创建一个测试方法。
现在,因为从构造我们知道,它需要一个INT,并LOCALDATE双。我在网上搜索,发现
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’.
所以我把一个正常的数量在10001的testID和双会像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”,另一方面会给我
Error: Incompatible types: java.lang.String cannot be converted to java.time.LocalDate
如果我尝试2018年5月30日它会说
Error: ';' expected
如果我尝试“2018年5月30日”它会说
Error: unclosed character literal
我跑出来试试它的方式。所以如果你能告诉我该如何把它放在那里,那会很棒。
我只是真的需要知道BlueJ是如何让我输入它的。导致BlueJ的资源非常稀少。
代码:
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)
不知道为什么它不只有工作(即使导入了类correclty),但至少可以工作。
只是另一个细节:a date has no format。像LocalDate
这样的类只保存值(在这种情况下,它具有年,月和日的值),但日期本身根本没有格式。同一日期可以用许多不同的格式表示:May 30th 2018
,2018-05-30
,30/05/18
是不同的格式,但都表示相同的日期。日期对象只是保存这些值,您可以选择任何想要表示它的格式。
当您打印LocalDate
,它含蓄调用toString()
,默认情况下选择yyyy-MM-dd
格式,这是一种ISO 8601格式,但正如我所说,这只是众多可能的方式来格式化日起(虽然值始终保持不变)。告诉“日期格式”是错误的和误导性的。
是啊我不知道为什么BlueJ必须把它作为java.time.LocalDate.of(2018,5,30),但嘿,我很高兴它的工作。花了我几个小时才弄明白。再次感谢 –
尝试转换在LOCALDATE调用,如:
TestPaper (2018-05-30, LocalDate.parse("2018/05/30"), 30/05/2018);
有内其他LOCALDATE静态方法可以使用。有关更多示例,请参见here。
从上面您的评论,不要忘记你的导入:
import java.time.LocalDate;
哪里是实现所有这些的代码? – nullpointer
我现在就添加它,它真的只是一个简单的程序。 –
我不使用bluej,所以不确定它接受什么样的表达式。你可以把代码放在'LocalDate.of(2018,5,30)'吗?或者一个字符串'“2018-05-30”'(不知道你是否已经试过双引号)? – 2017-08-25 12:30:35