For循环如何在不离开第一次迭代的情况下打印到控制台java

For loop how to print to console without leaving on first iteration java

我写了一个 for 循环来计算数组中的每个值,如果该数组不包含用户输入的给定数字 (numberIn),则会出现相关错误出现。

但是我注意到我在 i++ 上收到死代码警告,因为它只迭代一次。有没有办法让循环完全迭代?

for (int i = 0; i < array.length; i++) {
    if (!(numberIn == array[i]))
        System.out.println("WRONG!!!!!");
        break;
}   

编辑:对大家造成的巨大混乱深表歉意!我想说的是,如果值不在数组中,我希望出现错误,再次抱歉! :(

你需要用花括号{}把if语句括起来,否则它总是会在一次迭代后退出。如果没有 {},则 if 语句仅适用于紧接其下方的语句。在本例中是 System.out.println("WRONG!!!!!"); 语句。默认情况下,break 语句不是 if 语句的一部分。大括号表示其中的所有内容仅在条件为真时才执行,而不仅仅是下一条语句。

编辑:另外,如果它没有检测到匹配项,您可以写入输出。它应该只在匹配的情况下才打印ln()。去除那个 !来自 if 语句,它应该可以工作。

固定版本

for (int i = 0; i < array.length; i++) {
        if (numberIn == array[i]){
             System.out.println("WRONG!!!!!");
             break;
         }
} 

无论 if 语句的计算结果是否为真,您都会从循环中中断。

修复:

for (int i = 0; i < array.length; i++) {
    if (!(numberIn == array[i])){
        System.out.println("WRONG!!!!!");
        break;
    }
}   

您需要在 if 块中包含 break。现在,它总是在执行。

参见:

for (int i = 0; i < array.length; i++) {
  if (!(numberIn == array[i])) {
    System.out.println("WRONG!!!!!");
    break;
  }
}   

一般来说,使用 break 被认为是不好的做法。如果您想在检测到第一个错误后停止,可以考虑将其转换为 while 循环。

当你要求休息时,它会离开你当前所在的循环。 简单地取出 break; 允许它 运行 通过所有值。

编辑:将中断放在括号内。我不认为他希望它永远 运行,直到他找到价值。

您需要更多牙套,例如:

for (int i = 0; i < array.length; i++) {
            if (!(numberIn == array[i])){
                 System.out.println("WRONG!!!!!");
                 break;

 }
        }   

您的错误是忘记在 "if" 语句中加上括号。您的代码如下所示:

 if (!(numberIn == array[i]))
                   System.out.println("WRONG!!!!!");
   break;

因此无论 if 语句是否为 运行,中断都将为 运行。

将 break 放在 if 语句中,它将起作用。

你的 break 命中是因为它不在 if 语句中,你应该将 break 放在 if 语句中它会起作用

for (int i = 0; i < array.length; i++) {
            if (!(numberIn == array[i]))
               {
                 System.out.println("WRONG!!!!!");
                 break;
               }
        }

我认为是你的牙套有问题:

如果 if 语句主体没有大括号,它实际上被解析为以下内容,这可能不是您想要的:

for (int i = 0; i < array.length; i++) {
    if (!(numberIn == array[i])) {
        System.out.println("WRONG!");
    }
    break;
}

希望这能让您更清楚地了解为什么您的循环在一次迭代后总是会中断。添加大括号,然后将中断放回您想要的位置应该可以解决您的问题(我还稍微重写了您的 if 条件):

for (int i = 0; i < array.length; i++) {
    if (numberIn != array[i]) {
        System.out.println("CORRECT!");
        break;
    }
}
public static void main (String[] args) throws java.lang.Exception
    {
        int array[] = {1,2,3};
        int numberIn = 3;
        for (int i = 0; i < array.length; i++) {
            if (!(numberIn == array[i])){
                 System.out.println("WRONG!!!!!");
                 break;
            }
        } 
    }

if 语句需要括号 :D

我同意其他帖子的观点,即 break 应该在 if 语句中用括号括起来,但是根据您所说的循环应该执行的操作,逻辑似乎也不正确。你说过你只希望在循环中找到值时出现错误消息,所以如果我正确理解循环打算做什么,它应该是:

for (int i = 0; i < array.length; i++) {
        if ( numberIn == array[i] ) 
        {
             System.out.println("WRONG!!!!!");
             break;
        }
}   

据我了解,您正在尝试测试 numberIn 不在 数组中的情况。在这种情况下,最简单的方法是遍历数组,跟踪是否找到该值,然后再检查是否找到:

boolean found = false;
for (int i = 0; i < array.length; i++) {
    if (numberIn == array[i]) {
        found = true;
        break;
    }
}  

if (!found) {
    System.out.println("WRONG!!!!!");
}

如果你使用一种方法,你也可以更干净地做到这一点:

boolean contains(array, value) {
    for (int i = 0; i < array.length; i++) {
        if (value == array[i]) {
            return true;
        }
    }  
    return false;
}


if (!contains(array, numberIn)) {
    System.out.println("WRONG!!!!!");
}