java - 找不到空指针异常

标签 java nullpointerexception

错误发生在此类的最后一行,我试图打印这副牌中第一张牌的编号,但我不太确定为什么。

    public class CardTricks {
    public static void main (String[] args){

        Deck newdeck = new Deck();
        newdeck.construct();
        newdeck.shuffle();
        System.out.println(newdeck.deck[0].Number);

    }
}

这是卡片的类,主要目的是为卡片提供套件属性和数字属性。

public class Card {
    String Suite;
    int Number;
}

这是牌组类,该类中的函数用于创建牌组并洗牌。

public class Deck {
    Card[] deck;

    public void construct(){

        deck = new Card[52];

        String[] possuite = new String[4];
        possuite[0] = "Hearts";
        possuite[1] = "Diamonds";
        possuite[2] = "Clubs";
        possuite[3] = "Spades";

        int x = 0;

        while (x < 4){
            String suite = possuite[x];
            x++;
            int number = 1;
            System.out.println(suite);

            while (number < 14){
                deck[number-1] = new Card();

                deck[number-1].Suite = suite;
                deck[number-1].Number = number;
                number++;
           }
        }
    }

    public void shuffle(){
        int x;
        int y;
        int z = 0;

        while (z < 10000){
            x = (int)(Math.random()*52);
            y = (int)(Math.random()*52);
            Card a = deck[y];
            Card b = deck[x];
            deck[x] = a;
            deck[y] = b;
            z++;
        }

    }
}

最佳答案

您只需填充套牌中的前 13 个位置,并在每次生成新套件时覆盖它们。

你应该做什么:(请注意,我已将 x++ 移至底部)

    while (x < 4){
        String suite = possuite[x];
        int number = 1;
        System.out.println(suite);

        while (number < 14){
            int cardPos = (number-1) + (13*x);
            deck[cardPos] = new Card();


            deck[cardPos].Suite = suite;
            deck[cardPos].Number = number;
            number++;
       }
       x++;

关于java - 找不到空指针异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52888956/

相关文章:

java - 为什么 BufferedReader 的 2 个引用在这里不独立运行?

java - 无法在 PDF 查看器应用程序中打开 PDF

java - 有什么办法可以修复这个数组越界异常吗?

java - Processbuilder 在 Intellij 中成功,但在 Eclipse 中失败

android - 以电子邮件地址作为目标的 SmsManager - NullPointerException

java - 无法启动 LibGDX 工具 2D 粒子编辑器

保存对象类型的 Java JPanel 组合框

java - Ubuntu 12.04 上带有 openjdk 6 的 NullPointerException

java - SWT 空指针异常

android - 更高 API 上的 NetworkOnMainThreadException