【问题标题】:Cannot convert from int to boolean无法从 int 转换为 boolean
【发布时间】:2014-09-02 17:27:58
【问题描述】:
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?我该如何解决这个问题。

【问题讨论】:

  • 呸,谢谢。一直在看简单的东西。

标签: java int boolean


【解决方案1】:
for (int col = 0; array[row].length; col++){

第二部分接受boolean 表达式,

; array[row].length; 

你正在传递int

你需要

row < array.length

col < array[row].length

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      正如official tutorial 中指出的那样,for 语句看起来像

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

      termination 表达式的计算结果为false 时,循环终止。

      在您的情况下,*array.length 用于代替终止,但在 Java 中布尔值不能用整数表示,因此 if(1) 之类的东西无效。这意味着您需要更具体并使用可以评估为布尔值(真或假)的实际表达式,例如

      • true
      • false
      • a&lt;b
      • a&gt;=b

      这就是为什么你的循环应该看起来更像

      for (int row = 0; <strong>row&lt;array.length</strong>; row++){
      for (int col = 0; <strong>cor&lt;array[row].length</strong>; col++){


      顺便说一句

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

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

      return total == 45;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-02-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-03-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多