【发布时间】:2018-02-03 12:04:47
【问题描述】:
我没有尝试将日期格式化为 YYYY-MM-DD 或 dd/MM/YYYY。我问的是 LocalDate 的文字格式。
我刚开始学习 Java,我正在使用这个名为 BlueJ 的 IDE。我想创建一个测试方法。
现在,从构造函数中我们知道它需要一个 int、LocalDate 和一个 double。我在网上搜索了一下,发现
java.time.LocalDate:LocalDate 实例保存一个没有时间的日期 区域,在 ISO-86011 日历系统中。 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”另一方面会给我
Error: Incompatible types: java.lang.String cannot be converted to java.time.LocalDate
如果我尝试 30.05.2018 它会说
Error: ';' expected
如果我尝试“2018-05-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;
}
【问题讨论】:
-
实现这一切的代码在哪里?
-
我现在就添加它,真的只是一个简单的程序。
-
我不使用bluej,所以不确定它接受什么样的表达。你能输入像
LocalDate.of(2018, 5, 30)这样的代码吗?还是字符串"2018-05-30"(不确定您是否已经尝试过双引号)? -
只是另一个细节:日期has no format。像
LocalDate这样的类只是保存 值(在这种情况下,它具有年、月和日值),但日期本身根本没有格式。相同的日期可以以多种不同的格式表示:May 30th 2018、2018-05-30、30/05/18是不同的格式,但都表示相同的日期。日期对象只保存值,您可以选择您想要表示的任何格式。 -
当你打印一个
LocalDate,它隐式调用toString(),默认选择yyyy-MM-dd格式,这是一个ISO 8601 format,但正如我所说在前面的评论中,这只是格式化日期的众多可能方法之一(尽管 value 始终保持不变)。告诉 “日期有格式” 是错误且具有误导性的。