0

ArrayList への追加で問題が発生しています。私の主な方法では:

public static void main(String[] args)
{
    ArrayList<Bin> warehouse = new ArrayList<Bin>();
    Bin a = new Bin( "A" );
    Bin b = new Bin( "B" );
    warehouse.add( a );
    warehouse.add( b );
    a.add( new BinItem( "1234-0", 500 ) );
    a.add( new BinItem( "1234-1", 25 ) );
    a.add( new BinItem( "1234-2", 7720 ) );
    b.add( new BinItem( "1234-3", 1000 ) );
    for ( Bin bn : warehouse )
        System.out.println( bn );
}

bin クラスには次のものがあります。

private String myName;
private ArrayList<BinItem> myContents;
public Bin( String name )
{
    myName = name;
}

public String getName()
{
    return myName;
}

public ArrayList<BinItem> getContents()
{
    return myContents;
}

public void add( BinItem b )
{
    myContents.add(b);    //This is where I'm getting the error.
}

public String toString()
{
    String s = "Bin " + myName + ":\n";
    for ( BinItem b : myContents )
        s += b + "\n";
    return s;
}

正常にコンパイルされますが、実行するたびに、マークされた行に「java.lang.NullPointerException」と表示されます。ばかげているかもしれませんが、誰か助けてくれませんか?どうもありがとう。

4

3 に答える 3

2

どこでも myContents を初期化しているようには見えません

 myContents = new ArrayList<BinItem>();
于 2013-04-09T02:19:43.723 に答える
2

あなたのコードを見ると、あなたは決して初期化していないようですmyContents:

private ArrayList<BinItem> myContents;

本当に常に初期化する必要があります。

private ArrayList<BinItem> myContents = new ArrayList<BinItem>();

確実に判断する最善の方法は、ブレークポイントを設定してデバッガを実行することです。デバッグは非常に便利なスキルです (Eclipse では非常に簡単に起動できます)。

myContentsではなく null のようですb

于 2013-04-09T02:19:49.573 に答える
1

メソッドで、ほとんどのアイテムに対して初期化されていない ArrayListtoString()を反復処理しようとしているため、エラーが発生しています。myContents

于 2013-04-09T02:19:16.830 に答える