1

次のコードを実行すると、「スレッド「メイン」java.lang.NullPointerExceptionの例外」というエラーが発生します。

それはdeck[i2]の塗りつぶしに関係していると思います。私がやろうとしているのは、forループが実行されるたびに値を追加することです。

誰かが何が悪いのか教えてもらえますか?

public class Deck {
    private Cards cards;
    private String[] suits;
    private String[] ranks;
    private String[] deck;
    private int i2;


    public void Deck() {
        //Instantiate class Cards
        cards = new Cards();
        //run method to get cards / suits
        suits = cards.getSuits();
        ranks = cards.getRanks();

        //Build an array (deck) and fill it with all possible cards
        i2 = 1;
        for (int i = 0; i < suits.length; i++) {

            //Run through ranks
            for (int i1 = 0; i1 < ranks.length; i1++) {
                deck[i2] = suits[i] + ranks[i1];
                2++;
            }
       }
    }
}
4

3 に答える 3

1

deckフィールドは初期化されていないため、アクセスすると。がスローされますNullPointerException。それを構築する前に、初期化してdeckください:

deck = new String[sizeOfDeck];

デッキのサイズを表すはsizeOfDeckどこですか。int

于 2012-05-12T20:09:25.613 に答える
1

deckアレイを初期化しましたか?外側のループののどこかに、次のようなステートメントが必要です。for

deck = new String[ranks.length * suits.length];

また、クラス内の配列suitsranks配列も同様の方法で初期化してください。Cards

于 2012-05-12T20:09:31.930 に答える
1

'deck'を初期化したことはありません。次のようなものにする必要があります:

deck = new String[ranks.length * suits.length];
于 2012-05-12T20:10:27.920 に答える