2016-03-30 3 views
2
import java.util.* 
public class InheritancePart1 
{ 
    ArrayList<Date> dates = new ArrayList<Date>(); 
    dates.set(0, (1, 12, 1998)); 
    //Syntax error on token ",", Name expected after this token 
} 

からユーザが作成したオブジェクト/入力とのArrayListの初期化、Iは、 例えばので(INT M、INT D、int型のY)、(1、1、2000)によって定義されたDateオブジェクトを持っています (String monthName、int d、int y)で定義されているLongDateというDateのサブクラス(たとえば、 "January"、1、2000)です。わかりやすくするために、私はこれらのクラスを省略して、メインメソッドを示しました。このプログラムのコンソール

私の問題は、Date型の配列を作成してから、 配列に複数のDateオブジェクトとLongDateオブジェクトを設定してから、これらの オブジェクトでメソッドを呼び出す必要があることです。しかし、ArrayListの のインデックスにDateクラスのオブジェクトを割り当てようとすると、上記のようなエラーメッセージが表示されます。

これがなぜ起こっているのか、何が間違っているのかについてのアイデアはありますか?私はやってみた

dates.set(0, Date(1, 12, 1998)); 

私は同じエラーメッセージを得た。また、Scannerを使用して初期化しようとしましたが、同じエラーメッセージを表示する が動作しませんでした。

誰でもこれらのことを私に助けてくれたら、本当に感謝します。

dates.add(new Date(year, month, date)); 

注意こと:あなたは要素を交換しない、追加されているので、あなたがList.addではなくList.setを使用することに注意し、

また
new Date(year, month date) 

としてコンストラクタを呼び出す必要が

+2

使用 'dates.add(新しい日付(年、月、日));'。 –

+0

ありがとう!私は構文がわからないが、これは助けた –

+0

オブジェクトの作成は本当に基本的なものです。私は[Objectsチュートリアル](https://docs.oracle.com/javase/tutorial/java/javaOO/objects.html)を参照することをお勧めします。 –

答えて

0

パラメータyearmonthはおそらく期待通りではありません(のばかげた APIが悪いです) - yearは1900年以来の年数。 monthはゼロベースなので、1月はゼロです。そのように、あなたが使用する必要があるだろう:

dates.add(new Date(1998 - 1900, 12 - 1, 1)); 

1998年12月

+0

私はそれに対処するLongDateとDateクラスのメソッドを持っています。年、月、日はjava.util.dateからではなく、入力からのものです。私はこの配列からオブジェクトを取り出し、APIが何を述べているかではなく、1998を1998として扱うメソッドに渡します。 –

+0

それは混乱しています。 'java.util.Date'を(ワイルドカードを使って)インポートしていて、独自の' Date'クラスがあることを指定していません。 –

+0

私は怠け者だったので、ちょうどそれをしました。実際には、ArrayListとScannerだけが必要でした。 –

0

の第一を表す日付を作成するために、あなたは、日付のリストを使用しているので、あなたが方法add(...)とパッシングを使用する必要がありますパラメータとしてDateクラスのインスタンスを返します。

Dateクラスのインスタンスでもない奇妙なリストをリストに入れようとしているため、コードが機能していません...あなたは契約を破っていますリストの内容と挿入する内容の間に...

解決策が有効な日付オブジェクトを追加している

... Calendarクラスを使用して

例:

List<Date> myDateList = new ArrayList<Date>(); 
myDateList.add(new Date()); 
final Calendar c1 = GregorianCalendar.getInstance(); 
c1.set(2014, 3, 30); // March 30th 2014 
// Date sDate = c1.getTime(); 
myDateList.add(c1.getTime()); 

     // print it 
     for (final Date d : myDateList) { 
      System.out.println(d); 
     } 
+0

NB:月/日の前に '0'をつけないでください。実際には8進数のリテラルなので、問題が発生します。 –

+0

ありがとう@AndyTurner –

関連する問題