无法从int转换为boolean

时间:2014-09-02 17:27:59

标签: java int boolean

private static boolean allNinePresent(int[][] array){

    int total = 0;

    for (int row = 0; **array.length**; row++){
        for (int col = 0; **array[row].length**; col++){

            int addEach = array[row][col]; 
            total = addEach + total;


        }           
    }

    if (total == 45){
        return true;
    } else {
        return false;
    }
}

数组不应该是int吗?为什么将它从int转换为boolean?我该如何解决这个问题。

3 个答案:

答案 0 :(得分:0)

for (int col = 0; array[row].length; col++){

第二部分接受boolean表达式

; array[row].length; 

您正在通过int

你需要

row < array.length

col < array[row].length

答案 1 :(得分:0)

for循环的第二部分不是停止,它是条件,循环将继续循环。使用row < array.lengthcol < array[row].length

答案 2 :(得分:0)

正如official tutorial中所指出的那样,语句看似

for (initialization; termination; increment) {
    statement(s)
}

  

termination表达式求值为false时,循环终止。

在你的情况下*array.length用于代替终止,但在Java中,布尔值不能用整数表示,所以像if(1)这样的东西是无效的。这意味着您需要更具体并使用可以计算为布尔值(true或false)的实际表达式,例如

  • true
  • false
  • a<b
  • a>=b

这就是你的循环看起来更像

的原因

for (int row = 0; row<array.length; row++){
for (int col = 0; cor<array[row].length; col++){


BTW

if (total == 45){
    return true;
} else {
    return false;
}

可以改写为更简单的东西,如

return total == 45;