模运算符空指针异常

时间:2015-05-28 15:34:21

标签: java android android-studio

这是我在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)行。我有什么想法吗?

2 个答案:

答案 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()来简单地修复它; (如果它当然没有删除其他数据)。