【问题标题】:for-loop Java return valuefor循环Java返回值
【发布时间】:2016-09-03 05:45:43
【问题描述】:

我对 Java 很陌生,如果问题太简单,请见谅。我正在尝试评估一个数组是否是斐波那契数列的一部分。当整个“for”循环没有中断时,我不知道如何返回“true”值。有任何想法吗?先感谢您!这就是我现在所拥有的:

public boolean checkFibb(ArrayList<Integer> array1) {
    int i;
    int fibb;

    if (array1.size() < 3) {
        System.out.println("Your array is too short!");
    } else {
        for (i = 0; i <= array1.size() - 2; i++) {
            fibb = array1.get(i + 2) - (array1.get(i + 1) + array1.get(i));

            if (fibb != 0) {
                System.out.println("Elements are not part of the Fibonacci sequence.");
                break;
            } else {
                System.out.println("Elements are part of the Fibonacci sequence.");
            }
        }
    }

    return true;
}

【问题讨论】:

  • 不要在循环中使用break;,而是使用return false;

标签: java for-loop arraylist


【解决方案1】:

您在代码中所做的是,当您检测到元素不是斐波那契数列的一部分时,您正在中断循环的当前迭代。 break 仅停止您所在循环的当前迭代。此时您想要做的是来自函数的return false。当您检测到该数组确实是斐波那契数列时,此时您可能需要return true

如果您的数组太短,则它不能是斐波那契数列,因此此时您将return false

public boolean checkFibb(ArrayList<Integer> array1) {
int i;
int fibb;

if (array1.size() < 3) {
    System.out.println("Your array is too short!");
    return false;
} else {
    for (i = 0; i <= array1.size() - 2; i++) {
        fibb = array1.get(i + 2) - (array1.get(i + 1) + array1.get(i));

        if (fibb != 0) {
            System.out.println("Elements are not part of the Fibonacci sequence.");
            return false;
        } else {
            System.out.println("Elements are part of the Fibonacci sequence.");
            return true;
        }
    }
}

}

【讨论】:

  • 感谢您的回答!但是似乎仍然有问题。我正在 Eclipse 中编辑我的代码,它表明我的 for 循环的 i++ 部分是“死代码”。更重要的是,代码不能正常工作,数组 [2, 4, 6, 10, 15, 26] 它返回真值,虽然 10+15 不等于 26。这怎么可能?还有一个问题,我的 checkFibb 函数不需要一些返回值吗?
  • 是的,我没有完全纠正代码,我只是展示了使用 return 语句的方法。返回类型确实是布尔值。您必须在函数底部添加另一个 return 语句才能使编译器满意。 :)
【解决方案2】:

你总是从方法中返回true。您应该执行以下操作:

public boolean checkFibb(ArrayList<Integer> array1) {
   int i;
   int fibb;
   boolean isFibb = true;

   if (array1.size() < 3) {
       System.out.println("Your array is too short!");
       isFibb = false;
   } else {
       for (i = 0; i <= array1.size() - 2; i++) {
           fibb = array1.get(i + 2) - (array1.get(i + 1) + array1.get(i));

           if (fibb != 0) {
                System.out.println("Elements are not part of the Fibonacci sequence.");
                isFibb = false;
                break;
           } else {
                System.out.println("Elements are part of the Fibonacci sequence."); 
           }
       }
   }
   return isFibb;
}

【讨论】:

    猜你喜欢
    • 2011-11-25
    • 1970-01-01
    • 2016-08-23
    • 2019-04-24
    • 2012-02-28
    • 2015-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多