-1

このコードを見てください:

/*   Implementation to populate List<String[]> schedule  */

public List<String[]> getSchedBySIN(String sin) {
    List<String[]> listBySin = null;

    for (String[] temp : schedule) {
        if(temp[0].equals(sin)) listBySin.add(temp);
    }

    return listBySin;
}

listBySin行に...listBySin.add(temp);黄色の下線が引かれ、Eclipseは次のように通知します。Nullポインターアクセス:変数listBySinは、この場所でのみnullになります。

何故ですか?私がやりたいのは、最初の要素がに等しい場合のlistBySin文字列配列を入力することです。schedulesin

4

5 に答える 5

4

Listvarにオブジェクトを割り当てる必要があります。

List<String[]> listBySin = new ArrayList<String[]>();
于 2012-05-22T10:10:28.777 に答える
3

リストをインスタンス化する必要があります。

List<String[]> listBySin = new ArrayList<String[]>();
于 2012-05-22T10:10:33.287 に答える
3

代わりにリストを初期化/割り当てます

List<String[]> listBySin = null;

以下を使用してリストを初期化します

List<String[]> listBySin = new ArrayList<String[]>();
于 2012-05-22T10:10:50.883 に答える
2

その上でメソッドを呼び出す前に、最初にオブジェクトを作成する必要があります。何かのようなもの

listBySin = new ArrayList<String[]>();

ループに入る前に

于 2012-05-22T10:12:56.543 に答える
2

You must initialize Listによると。ArrayList、Vector、Stack、CopyOnWriteArrayListで初期化できます。

    List<String[]> str=new ArrayList<String[]>();
    List<String[]> str=new LinkedList<String[]>();
    List<String[]> str=new Stack<String[]>();
    List<String[]> str=new Vector<String[]>();
    List<String[]> str=new CopyOnWriteArrayList<String[]>();

それはすべてあなたの必要性に依存します。

于 2012-05-22T10:43:17.493 に答える