2017-08-25 3 views
1

YYYY-MM-DDまたはDD/MM/YYYYで日付を書式設定しようとしていません。 LocalDateのリテラルフォーマットについて質問しています。BlueJの[オブジェクトの作成]ダイアログボックスにLocalDateの値を入力する方法

私はちょうどJavaの学習を始めました。私はBlueJというIDEを使用しています。私はテストメソッドを作成したい。

のスクリーンショットは、私は、コンストラクタから、我々はそれがint、LOCALDATEとダブルが必要であることを知っているので、今Ignore the Error part at the bottom

を行うにしようとしています何が表示されます。私はオンライン検索と

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

は、だから私はテストIDのために10001で通常の数を入れてしまうと、二重、私はまたそれが(文字列を登録することが必要だった場合のことを知っている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」は一方で、私は2018年5月30日にしようと、私は「2018年5月30日」をしようとした場合、それは

Error: ';' expected 

を言う私に

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

を与えるだろうそれは言うだろう

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 "'(既に二重引用符を使用しているかどうかはわかりません)? –

答えて

0

は、パッケージ

を含め、解決策はLocaDateを作成するコードが、BlueJのニーズを追加することですパッケージ接頭辞の付いた完全修飾クラス名「java.time。」:

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

ない、それだけででは動作しない理由を確認してください(たとえクラスがインポートされた場合でも)少なくともこれは機能します。


ちょうど別の詳細:a date has no formatLocalDateのようなクラスは値を保持しています(この場合は年、月、日の値を持ちます)。しかし、日付自体には何も書式はありません。同じ日付を多くの異なる形式で表すことができます。May 30th 20182018-05-3030/05/18は異なる形式ですが、すべて同じ日付を表します。日付オブジェクトは値を保持するだけで、それを表現したい任意の形式を選択できます。

あなたがLocalDateを印刷するとき、常に値が(それは暗黙的には、デフォルトでISO 8601形式ですyyyy-MM-dd形式を選択している、toString()を呼び出しますが、私が言ったように、それはちょうど日付をフォーマットするための多くの可能な方法の一つです同じままです)。そのに「という形式の日付がある」と間違っていると誤解を招くことがあります。

+1

ええ、私はBlueJがjava.time.LocalDate.of(2018,5,30)として持っていなければならない理由を知りませんが、ちょっと、うまくいきました。それを理解するのに数時間かかりました。再度、感謝します –

0

など、コールにLOCALDATEを変換してみてください。あなたが使用することができますLOCALDATE内の他の静的メソッドがあります

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

。より多くの例については、hereを参照してください。上記のコメントから、

は、あなたのインポートを忘れないでください:コメントで述べたように

import java.time.LocalDate; 
関連する問題