【问题标题】:why is my method's logic not outputting a correct boolean value?为什么我的方法的逻辑没有输出正确的布尔值?
【发布时间】:2016-11-21 19:43:49
【问题描述】:

我正在为一个程序编写以下代码,该程序返回一个整数数组中三个连续数字加起来是否为 7 的布尔值。它没有返回正确的布尔值,我很难理解为什么。

public static void main(String[] args) {       
    int[] numbers ={2,1,5,1,0};
    System.out.println(luckysevens(numbers));

}

public static boolean luckysevens(int array[]) {

    boolean isLucky=false;

    for (int i=0; (i<=((array.length)-2)); i++){

        if ((array[i]+array[i+1]+array[i+2])==7)
        {
        isLucky=true;
        }
        else { 
            i++;
        }
        }


return isLucky;
}

}

【问题讨论】:

标签: java logic


【解决方案1】:

为了使代码正常工作,你必须做两件事!

  1. 删除变量i递增的else部分(这会破坏循环中的登录)

  2. 使用 而不是 执行循环(这将导致 IndexOutOfBoundsException

    李>

public static boolean luckysevens(int array[]) {
boolean isLucky = false;
for (int i = 0; i < (array.length - 2); i++) {
    if ((array[i] + array[i + 1] + array[i + 2]) == 7) {
    isLucky = true;
    }
}
return isLucky;
}

【讨论】:

    【解决方案2】:

    您可以省略 else 部分,因为在每次迭代中,i 应该会增加。如果我是你,我会这样做:

    public static boolean luckysevens(int array[]) {
    
        if(array.length < 3)
            return false;
        for (int i=0; i<array.length-2; i++){
            if (array[i]+array[i+1]+array[i+2] == 7)
                return true;
        return false;
    
    }
    

    注意:最好将方法命名为luckySevens,而不是luckyseven

    【讨论】:

      【解决方案3】:

      您的 for 循环加倍,而且您的方法签名也有问题。应该是:

      public static boolean luckysevens(int[] array) {
      
          boolean isLucky=false;
      
          for (int i=0; i<=array.length-2; i++)
          {
      
              if ((array[i]+array[i+1]+array[i+2])==7)
              {
                   isLucky=true;
              }
          }
      
      
      return isLucky;
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-03-22
        • 2018-07-09
        • 1970-01-01
        • 1970-01-01
        • 2017-01-10
        • 2022-12-31
        • 1970-01-01
        相关资源
        最近更新 更多