Java 循环 - 中断?继续?

Java Loops - Break? Continue?

我已经阅读了一堆关于使用 breakcontinue 的线程,我怀疑问题不一定是我对它们的使用,而是我循环的布局。在下面的代码中,我试图遍历用户输入的字符串中的字符以查找任何 - 符号。如果找到,它会向用户抛出一个错误,指出找到负数并退出。否则,如果它没有找到 - 符号,它应该打印出字符串中的所有字符。

我在第一个循环结束时使用了 break 来查找 - 符号,但它没有继续到下一个循环。我也尝试了 continue,但没有用。循环对我来说是新的,所以我可能完全错了,我所知道的是我的第一个循环工作正常,当它在字符串中找到 - 时会抛出错误。

strNum1 = JOptionPane.showInputDialog ("Enter Number String");
for (int i = 0; i < strNum1.length(); i++) {
  char c = strNum1.charAt(i);
  if (c == '-') {
    System.out.println("Negative Digit Found - Exiting");
    break;
  }
}

for (int i = 0; i < strNum1.length(); i++) {
  char c = strNum1.charAt(i);
  if (c <= 9) {
    System.out.println(c);
  }
}

如果将 break 替换为 return,它将退出整个方法。听起来这就是可能你想要的。

break 语句只在第一个循环中打断你。为了在找到 - 字符时跳过第二个循环 运行,您可以使用一些 boolean 变量来指示第二个循环是否应该 运行 :

strNum1 = JOptionPane.showInputDialog ("Enter Number String");
boolean isValid = true;
for (int i=0; i<strNum1.length(); i++) {
        char c = strNum1.charAt(i);
        if (c == '-'){
            System.out.println("Negative Digit Found - Exiting");
            isValid = false;
            break;
        }
}
if (isValid) {
    for (int i=0; i<strNum1.length(); i++) {
        char c = strNum1.charAt(i);
        if (c <= '9'){
            System.out.println(c);
        }
    }
}

如果不想在第一个循环之后执行第二个循环,请使用 return 语句而不是 break。

所有答案都很好,但是如果您想重复提示直到获得有效值, 你将需要另一个循环,使用标签:

negative: while(true) {
    strNum1 = JOptionPane.showInputDialog ("Enter Number String");
    for (int i=0; i<strNum1.length(); i++) {
        char c = strNum1.charAt(i);
        if (c == '-'){
            System.out.println("Negative Digit Found - Exiting");
        continue negative;
        }
    break negative;
    }
}

你没有说数字是否应该是整数,所以我假设是。 如果是这样,而不是使用循环,验证输入的更好方法是:

int num1;

try {
  num1 = Integer.parseInt(strNum1);
catch (NumberFormatException e) {
  //not a valid number, complain about it
}

if (num1<0) {
  //negative number not allowed, complain about it
}

'break;' 将停止它所在的循环 运行,其中 'continue;' 将跳过循环中的当前 'iteration'。

 for(int x = 0; x < 10; x++)
 {
     if (x == 5)
        break;
      // other code
 }
 // more other code

这将在 x == 5 时退出循环,并且不会执行第 6 到第 10 次迭代。

 for(int x = 0; x < 10; x++)
 {
     if (x == 5)
        break;
      // other code
 }
 // more other code

除了第 6 次迭代之外,每次迭代都会执行此操作。

但是如果你想跳过'//更多其他代码',那么你需要使用'return;',前提是你的代码在一个函数中,它会跳过函数的其余部分,在这种情况下是“//更多其他代码”。

 for (int i=0; i<strNum1.length(); i++) {
    char c = strNum1.charAt(i);
         if (c == '-'){
            System.out.println("Negative Digit Found - Exiting");
        break;
        }
 }

可以修改为

 if(strNum1.charAt(0) != '-'){
   for (int i=0; i<strNum1.length(); i++) {
    char c = strNum1.charAt(i);
    if (c <= 9){
        System.out.println(c);
    }
   }
 }
else {
 //negative number found...
 }

这样就可以避免不必要的for循环和break语句