我正在尝试开发一种方法,用于检查给定数组的前4个元素(假设数组至少包含4个元素)是否连续相等,我的第一种方法是创建一个布尔变量并将其设置为首先,将false设置为if a[i] == a[i + 1]。但是问题在于,无论这四个元素是连续的还是不连续的,它总是将其打印为true。

public static boolean isConsecutive(int[] a) {
    boolean isConsecutive = false;
    for (int i = 0; i < 4; i++) {
        if (a[i] == a[i + 1]) {
            isConsecutive = true;
        }
    }
    return isConsecutive;
}


我的错误在哪里?提前致谢!

最佳答案

如果不是连续的,则需要else分支将其再次设置为false,并循环直到3。或者最好在某些不相等的情况下立即返回return语句,例如

if (a[i] == a[i + 1]) {
    isConsecutive = true;
} else {
    return false;
}


您也可以关闭变量isConsecutive,例如

 public static boolean isConsecutive(int[] a) {
     for (int i = 0; i < 3; i++) {
         if (!(a[i] == a[i + 1])) {
             return false;
         }
     }
     return true;
 }


请注意,您的循环对于索引超出绑定的异常并不安全,因为它的大小可能小于4。

07-28 06:41