Java 简单卡类的空点异常错误

Java 简单卡类的空点异常错误,java,nullpointerexception,Java,Nullpointerexception,我是Java的初学者,我一直在编写测试代码来应用我读到的一些概念。所以,我想创建一个类来描述扑克牌。card类包含描述套件和值的字段(所有4个套件为1-13)。正如您所看到的,这个类的创建非常简单-- 我制作了另一个类来测试这个类,并将52张卡片添加到一个数组中(我有另一个类,它将处理52张卡片,但在我这里的问题上下文中这并不重要)。这个名为CardTest的类包含main方法。我创建了一个for循环,将所有内容都附加到数据组数组中,但是当我想循环数据组并打印出卡值(套件和值)时,就会出现问题。

我是Java的初学者,我一直在编写测试代码来应用我读到的一些概念。所以,我想创建一个类来描述扑克牌。card类包含描述套件和值的字段(所有4个套件为1-13)。正如您所看到的,这个类的创建非常简单--

我制作了另一个类来测试这个类,并将52张卡片添加到一个数组中(我有另一个类,它将处理52张卡片,但在我这里的问题上下文中这并不重要)。这个名为
CardTest
的类包含main方法。我创建了一个for循环,将所有内容都附加到数据组数组中,但是当我想循环数据组并打印出卡值(套件和值)时,就会出现问题。我收到一个NullPointException错误。以下是cardTest类:

public class CardTest {
    public static void main(String[] args){
        Card[] temp = new Card[52];
        for (int i = 0; i <12; i++){
            temp[i] = new Card("Spade", i + 1);
            temp[i+13] = new Card("Club", i + 1);
            temp[i+26] = new Card("Diamond", i + 1);
            temp[i +39] = new Card("Heart", i + 1);
        }
        for (int i = 0; i < 52; i++){
            System.out.println(temp[i].getSuite());
        }
    }
}
公共类CardTest{
公共静态void main(字符串[]args){
卡[]临时=新卡[52];
对于(int i=0;i而言,问题在于:

        temp[i+13] = new Card("Club", i + 1);

它永远不会是12,这就是为什么会出现nullpointer异常。

问题是您只会将
temp
数组填充到索引50(11+39),第二个循环尝试访问索引51。第一个循环的上限应该是13,而不是12。

您用于创建卡的for循环是错误的。您仅装入12*4=48张卡,留下temp[12]、temp[25]、temp[38]和temp[51]为空,请重试

    for (int i = 0; i <13; i++){
        temp[i] = new Card("Spade", i + 1);
        temp[i+13] = new Card("Club", i + 1);
        temp[i+26] = new Card("Diamond", i + 1);
        temp[i +39] = new Card("Heart", i + 1);
    }

for(int i=0;i显然,您没有向数组中添加52个
Card
实例(您为12次迭代中的每一次添加4个,12*4=48!=52)。因此,当您循环整个数组时,一些值将不可避免地为
null
(请记住,对象数组最初只包含
null
s)。循环到
i<13
应该可以解决这个问题。

您是否遗漏了什么?第二个
for
循环是空的,您所拥有的一切都很好。是的,我刚刚解决了这个问题,因为我在编辑之间从IDE复制,没有重复检查
    for (int i = 0; i <13; i++){
        temp[i] = new Card("Spade", i + 1);
        temp[i+13] = new Card("Club", i + 1);
        temp[i+26] = new Card("Diamond", i + 1);
        temp[i +39] = new Card("Heart", i + 1);
    }