我已经阅读了一些使用break
和continue
的线程,我怀疑问题不一定是我对这些问题的使用,而是我的循环布局。在下面的代码中,我试图迭代字符串中的字符,用户输入该字符串以查找任何-
符号。如果找到,它将向用户发出错误,发现负数并退出。否则,如果找不到-
符号,则应该打印出字符串中的所有字符。
我在第一个循环结束时使用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);
}
}
答案 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...
}
这样就可以避免循环和中断语句不必要了