Java循环 - 休息?继续?

时间:2015-06-04 12:28:01

标签: java for-loop 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);
  }
}

8 个答案:

答案 0 :(得分:3)

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);
        }
    }
}

答案 1 :(得分:2)

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

答案 2 :(得分:1)

'打破;'将停止其运行的循环,其中'continue;'将跳过循环中的当前“迭代”。

 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;',前提是你的代码在一个函数中,它将跳过函数的其余部分,这种情况是'//更多其他代码'。

答案 3 :(得分:1)

break离开循环, 继续跳转到下一次迭代。

答案 4 :(得分:0)

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

答案 5 :(得分:0)

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

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;
    }
}

答案 6 :(得分:0)

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

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
}

答案 7 :(得分:0)

 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...
 }

这样就可以避免循环和中断语句不必要了