2017-08-25 131 views
1

我並不是想要在YYYY-MM-DD或dd/MM/YYYY格式化日期。我在詢問LocalDate的字面格式。如何在BlueJ「創建對象」對話框中輸入LocalDate值

我剛開始學習Java,我正在使用這個名爲BlueJ的IDE。我想創建一個測試方法。

截屏會顯示什麼,我試圖做Ignore the Error part at the bottom

現在,因爲從構造我們知道,它需要一個INT,並LOCALDATE雙。我在網上搜索,發現

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’.

所以我把一個正常的數量在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; 
} 
+0

哪裏是實現所有這些的代碼? – nullpointer

+0

我現在就添加它,它真的只是一個簡單的程序。 –

+0

我不使用bluej,所以不確定它接受什麼樣的表達式。你可以把代碼放在'LocalDate.of(2018,5,30)'嗎?或者一個字符串'「2018-05-30」'(不知道你是否已經試過雙引號)? – 2017-08-25 12:30:35

回答

0

包括包

正如在評論中討論,解決的辦法是添加創建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格式,但正如我所說,這只是衆多可能的方式來格式化日起(雖然值始終保持不變)。告訴「日期格式」是錯誤的和誤導性的。

+1

是啊我不知道爲什麼BlueJ必須把它作爲java.time.LocalDate.of(2018,5,30),但嘿,我很高興它的工作。花了我幾個小時才弄明白。再次感謝 –

0

嘗試轉換在LOCALDATE調用,如:

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

有內其他LOCALDATE靜態方法可以使用。有關更多示例,請參見here

從上面您的評論,不要忘記你的導入:

import java.time.LocalDate;