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