这是我在Android Studio中的java代码段。
key
我收到以下错误:
public static void makepack(Card[] pack, int[] a, int[] size) {
for (int i = 1; i < 14; i++) {
Random r = new Random();
int Low = 1;
int High = 53;
int k = r.nextInt(High - Low) + Low;
// 1st 13 are diamonds, then hearts, then clubs and then spades
if (!inarray(a, k, size[0])) {
pack[i - 1].num = (k % 13) + 1;
pack[i - 1].type = (k / 13) + 1;
a[size[0]] = k;
size[0]++;
} else {
i--;
}
}
}
流程以退出代码1结束 例外情况是(%13)行。我有什么想法吗?
答案 0 :(得分:3)
唯一可能导致该行上的NPE的是pack[i - 1]
为空。
这就是你需要解决的问题。模数很好。
关于你的评论,你可能想要这个......
if (!inarray(a, k, size[0])) {
pack[i - 1] = new Card();
pack[i - 1].num = (k % 13) + 1;
pack[i - 1].type = (k / 13) + 1;
a[size[0]] = k;
size[0]++;
} else {
i--;
}
更好的做法是给Card一个带有num和type的构造函数,然后你可以将三个pack[i - 1]
行改为一行。
答案 1 :(得分:0)
如果你确定你的输入,那么最有可能的是[i-1]为空。您可以通过添加pack [i - 1] = new Card()来简单地修复它; (如果它当然没有删除其他数据)。