为什么我的方法逻辑没有输出正确的布尔值?

时间:2016-11-21 19:43:50

标签: java logic

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

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;
}

}

3 个答案:

答案 0 :(得分:0)

为了使代码有效,你必须做两件事!

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

  2. 使用&lt; 代替&lt; = 进行循环(这会导致 IndexOutOfBoundsException

  3. 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;
    }
    

答案 1 :(得分:0)

你可以省略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

答案 2 :(得分:-1)

您正在双重递增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;
}