尝试创建一种方法来检查数组是否仅包含 1 或 4

Trying to create a method to check if array contains only a 1 or 4

static boolean checkNum(int[] array) {

    boolean bool = true;

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

        if (array[i] != 1 || array[i] != 4) {
            return !bool;
        }
        i++;
    }
    return bool;
}

我尝试了几种编码方式,但都没有成功。我应该怎么做?它只需要遍历数组并找到任何不是 1 或 4 的东西,否则它应该是真的。

您只检查每个第二个元素,因为您递增 i 两次。

删除此行:i++;

您已经在此处的 for 循环中递增 ifor(int i = 0; i < array.length; i++){

您的代码有两个问题:

  • array[i] != 1 || array[i] !=4 始终 计算为 true。任何数字要么不为 1,要么不为 4。

    您正在查找条件 array[i] != 1 && array[i] !=4,它表示“数字不是 1 并且 不是 4”。另一个有效的替代方法是 !(array[i] == 1 || array[i] == 4),它表示“该数字不是 1 4”。最终选择哪一个取决于您的个人喜好。

  • 正如其他人指出的那样,循环内的 i++ 是多余的,并且使循环跳过第二个元素。


此版本应该可以解决您的问题:

static boolean checkNum(int[] array) {

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

        if (array[i] != 1 && array[i] != 4) {
            return false;
        }

    }

    return true;
}

你知道如何另外删除变量 bool 吗?

好处: 如果你使用 forEach 循环而不是 for 循环,那就更清楚了:

static boolean checkNum(int[] array) {

    for (int i : array) {

        if (i != 1 && i != 4) {
            return false;
        }

    }

    return true;
}

if(数组[i] != 1 && 数组[i] !=4){ 要么 如果(!(数组[i] = 1 || 数组[i] =4)){

您已经设法将两个正确的测试混为一谈,并产生了一个不可行的测试。很容易做到,所以总是检查你的复杂布尔表达式。

祝你好运:)

逻辑上,如果当前位置的值不是 1 并且 不是 4 那么 return false。

static boolean checkNum(int[] array){
    for(int i = 0; i < array.length; i++){
        if(array[i] != 1 && array[i] != 4){
            return false;
        }
    }
    return true;
}

我也会推荐for-each loop喜欢

static boolean checkNum(int[] array){
    for(int val : array){
        if (val != 1 && val != 4){
            return false;
        }
    }
    return true;
}