1

これが他の場所で何らかの方法で回答された場合はお詫びしますが、他の状況から同様の問題を特定するには、Javaに精通していません。

ここですべての情報を入手するのは難しいかもしれないので、私は必需品を入手しようとします。

私はCalendarプログラムを書いていますが、デモクラスでコンストラクターを呼び出すと次のようになります。

        System.out.println("Enter month (1 - 12)");
    month = console.nextInt();

    System.out.println("Enter year (> 1500)");
    year = console.nextInt();

    Calendar myCalendar = new Calendar(month, year);

コンストラクターを呼び出す行でnullポインター例外が発生します。また、コンストラクター自体の最初の関数呼び出しで1つ取得します。

    public Calendar(int m, int y)
{
    firstDate.setDate(m, 1, y);
    firstDayOfMonth();
}

すでに作成した日付クラスを使用しているため、setDateメソッド呼び出しの2番目の数値は1です。カレンダーには月と年のみが必要なので、日を1に設定します。

その後、次のように、エラーメッセージがわかりにくくなります。

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at edu.rice.cs.drjava.model.compiler.JavacCompiler.runCommand(JavacCompiler.java:272)

違いがあれば、私はDrJavaを使用してこれを行っています。誰かが私が何が起こっているのかを理解するのを手伝ってくれて、私が問題の修正に取り組むことができれば、それは素晴らしいことです。実際の解決策を提供するのに十分な情報がここにないかもしれないことを私は知っていますが、何が起こっているのかを理解すれば、少しの追加の調査でそれを理解できるかもしれません。初期化されていないパラメーターを使用して関数を呼び出すと、nullポインター例外が発生することを理解していますが、メソッド呼び出しに続いてコードをバックトラックすると、どこにも定義されていないものが見つかりませんでした。これらの他のエラーメッセージは、nullポインタがどこから来ているのかを知るのに役立つと思います。

よろしくお願いします。ここでルールを破った場合はお詫びします。

Edit1:firstDateを次のように初期化しています: `private ExtDate firstDate; ' 私はそれらのPrintステートメントを試してみます、多分それは助けになるでしょう。

Edit2:わかりました、私はそれを持っていると思います。助けてくれてありがとう。学習プロセスとそのすべて。

4

1 に答える 1

4

nullオブジェクトを使用する必要がある場所で使用すると、NullPointerExceptionが発生します。(詳細については、リファレンスを参照してください)。

簡単に言うと、コードのどこかに、オブジェクトではなくnull参照があります。以前に初期化したことがない可能性があるため、その例外が発生しました。

エラーステートメントに関しては、そのオブジェクトはおそらくfirstDateです。System.out.println(firstDate);電話の前に、電話で確認できfirstDate.setDate(m, 1, y);ます。おそらくそれは印刷されnullます。

于 2013-02-24T22:32:02.187 に答える