2

メインクラスで2つのArrayListを宣言しました。1つはルーチンオブジェクトのArrayListで、もう1つはルーチン名のString配列です。ルーチンが作成されるたびに、そのルーチン名とルーチンに格納されている名前がNamesarrayListに格納されます。

    static ArrayList <Routine> routineArrayList = new ArrayList <Routine> ();
    static ArrayList <String> Names = new ArrayList <String> ();                    

JListを作成し、StringNamesarrayListを使用してデータを設定しました。

    list = new JList(Names.toArray());

すべて順調です。名前を選択すると、対応するルーチンが選択されます。

問題は、それぞれのルーチンであり、独自の名前のArrayListがあります。

選択したルーチンを使用して、そのルーチン内の名前をJListに入力できるようにしたい。これが私が試していたものです。

    currentRoutine = routineArrayList.get(intChoice);
    ...
    list = new JList(currentRoutine.Names.toArray());  ******** PROBLEM LINE

System.out.println(currentRoutine.Names.toArray())まったく同じNullPointerExceptionです。

それはしばらくの間私を悩ませてきました、どんな助けでも同様に心から感謝されます、もしもっと情報が必要であるならば、私はそれを提供するために最善を尽くします。

編集

回答ありがとうございます。主な問題は、各Routineオブジェクト内のnames配列が正しく初期化されていないことでした。ただし、問題はまだあります。

'System.out.println("Choice: " + currentRoutine.names.get(0)); // Or get(x) 

'System.out.println("Choice: " + currentRoutine.names.toString() 

どちらも正確に必要なものを提供します。完全な名前の配列または要素注:'System.out.println( "Choice:" + currentRoutine.names.toArray()は、アドレスの詳細などを示します。

しかし、私が試してみると

'list = new JList(currentRoutine.names.toArray());' 

同じNullPointerExceptionが発生しますか?

乾杯

4

3 に答える 3

3

メソッドArrayList<String>.toArray()は決してをスローするべきではないNullPointerExceptionので、ここでの問題はほぼ確実にまたはのどちらcurrentRoutineかであるということcurrentRoutine.Namesですnull。入力するコードを調べて、routineArrayListそのすべての要素がnull以外であり、null以外のNamesフィールドがあることを確認する必要があります。

于 2012-10-16T14:12:40.040 に答える
0

提案:フィールドの命名規則に従うので、static ArrayList <String> names代わりにstatic ArrayList <String> Names

ruakhが彼の答えで述べたように、それはnullのようcurrentRoutineです。currentRoutine.Names

したがって、null可能性の小さなチェックを行います。

于 2012-10-16T14:21:28.260 に答える
0

助けてくれてありがとう、

私はそれを分類しました、それは本当に不十分にレイアウトされたフレームとJListsと関係がありました。最終的に、最初のJListのselectionListener内に「names」(Routine.names)の新しいJListと、新しいJFrameを宣言しました。

乾杯、

マシュー

于 2012-10-17T13:59:27.210 に答える