-2

我不断收到 NullPointerException(见下文)。在 C# 中一切正常,但在 android 中它坏了?

arrDBNumbers 已满,代码应该运行并计算 #1、#2、#3 等到 #49 的数量,将 arrFreq[i][1] 加 1 以用数字的总数填充 arrFreq。

它贯穿 if 语句,直到 k 达到 6,其中 arrDBNumbers[0][6] 为 1,然后跳转到 if 语句然后中断?我不确定这里发生了什么任何建议提前谢谢T

Integer[][] arrDBNumbers = new Integer[100][8];
Integer[][] arrFreq = new Integer[49][2];


for (int i = 0; i < 49; i++){
    for (int j = 0; j < 49; j++){
        for (int k = 1; k < 7; k++){
            if (arrDBNumbers[j][k] == (i + 1)){
                arrFreq[i][1]++;     //  < here is where I get Exception?
            }
        }
    }
}
4

2 回答 2

5

因为只是写

Integer[][] arrFreq = new Integer[49][2];

意味着您已经用所有元素初始化了数组,null因为它是一个对象数组,Integer并且对象的默认值将是空引用。 因此,

arrFreq[i][1]++;  // trying null++;

NullPointerException.

如果您使用了一个原始数组,则不会出现这种情况,这将默认为一个0s 数组。

int[][] arrFreq = new int[49][2];
于 2013-05-01T17:22:08.240 回答
0

Integer 是 int 的容器,在您的情况下,您有很多空对象。如果您改用 int ,它将按您的预期工作。

于 2013-05-01T17:24:42.743 回答