使用布尔表达式在数组列表中连续编号

时间:2017-01-21 20:39:38

标签: java arrays

我在执行此功能时遇到问题,因为它会打印出来" true"如果数组中有2个连续数字,则" false"如果不是。我得到的错误是布尔值不能转换为int,也在最后一行代码中,我必须将它放在System.out.println()的括号内?

public class A1Q2 {
    private static int hasTwoLengthRun(int[] array) { 
        for(int i=0; i < array.length; i++){
            if(array[i+1] == array[i]){
                return true;
            }
            else{
                return false;
            }
        }
    }

    public static void main(String[] args) { 
        int[] array = new int[]{5, 16, 7, 35, -2, -9, 75};
        System.out.println();
    }
}

4 个答案:

答案 0 :(得分:1)

我在这里看到至少3个问题:

  1. hasTwoLengthRun函数的返回类型应为boolean
  2. 您错误地安排了return false语句 - 应该在方法的最后调用它
  3. 您错误地使用了数组边界 - 您尝试从数组中获取元素时会遇到异常。
  4. 以下是更正后的代码:

    public class Test {
        private static boolean hasTwoLengthRun(int[] array) {
    
            for(int i=0; i < array.length - 1; i++){
                if(array[i+1] == array[i]){
                    return true;
                }
    
            }
            return false;
        }
    
        public static void main(String[] args) {
            int[] array = new int[]{5, 16, 7, 35, -2, -9, 75};
            System.out.println(hasTwoLengthRun(array));
    
        }
    }
    

答案 1 :(得分:1)

1)当您返回hasTwoLengthRun()值时,boolean应该返回int而不是boolean

2)一旦数组的两个元素不等于它,它就会返回false,因为它有一个破坏的逻辑。
 只有在遍历所有元素时才应返回false

3)对于编译器,该方法不返回值,因为只返回for中的值。如果您有一个没有元素的数组,则不必输入for并且不返回任何内容。这不合法。

4)当最后一次迭代使用数组中的索引时,您将获得ArrayIndexOutOfBoundsException for条件。

这是一个应该有效的代码:

private static boolean hasTwoLengthRun(int[] array) {
    for (int i = 0; i < array.length - 1; i++) {
        if (array[i + 1] == array[i]) {
            return true;
        }
    }
    return false;
}

答案 2 :(得分:0)

您收到错误,因为您已经写过hasTwoLengthRun函数返回int,而在您的return语句中,您返回true或{{1 } - 一个false - 类型的值。

答案 3 :(得分:0)

下面:

private static int hasTwoLengthRun(...

表示该方法应返回一个int。一个数字。

然后你返回true / false。在java中,这两种类型可以互换。

所以,改为:

private static boolean hasTwoLengthRun(...

除了;你的逻辑错了:

for(int i=0; i < array.length-1; i++){
  if(array[i+1] == array[i]) {
    return true;
  }
}
return false;

是您需要的; A)避免运行超过数组的长度,B)当前两个元素与你的条件不匹配时,不返回false!