【发布时间】:2017-03-20 19:48:14
【问题描述】:
我在 Java 中创建典型的卡片/甲板类时遇到了困难。我已经阅读了一些类似的问题和答案,但要么它们不相关/没有帮助,要么我还不能简单地理解它。 这是代码
public class Cards {
boolean isAvailable;
int card_id;
static final int AC = 32;
public Cards [] deck = new Cards[AC];
public void set () {
int a = 0;
for (int i = 0; i < AC; i++) {
if(a == 4) a = 0;
deck[i].isAvailable = true; // <---------
deck[i].card_id = i + (a * 101); // <---------
a++;
}
}
public void read () {
for (int i = 0; i < AC; i++)
System.out.println(deck[i].isAvailable + " " + deck[i].card_id);
}
public static void main (String[] args) {
Cards c = new Cards();
c.set();
c.read();
}
}
线程“main”中的异常 java.lang.NullPointerException
在 Cards.set(Cards.java:13)
在 Cards.main(Cards.java:24)
1。 我读过类似的问题,发现问题可能出在数组的初始化中,我尝试对我的 prog 做同样的事情,但它还是坏了。
我标记了第 13 行和第 14 行,因为它们被指向(当我注释第 13 行只是为了检查时,指针设置到下一行)。
2。 我想从您那里获得的下一部分帮助是: 即使有 main (用于培训目的),我看到其他班级使用这个班级(它只是创建甲板)所以我想我不需要 main ......除了第一点的 probs 之外一切都设置好了吗?
【问题讨论】:
-
在哪里您在数组初始化方面“尝试过做同样的事情”?我看不到您将
deck[i]设置为值的任何地方... -
当您的代码中有错误时,我建议使用您的调试器。这就是它的用途。
-
我建议您将
Card单独作为一张卡片,将Cards作为卡片集合分开。目前每张卡片里面都有 52 张卡片的数组,这没有意义(尤其是因为每张卡片都有 52 张卡片等)