Java 循环 - 中断?继续?
Java Loops - Break? Continue?
我已经阅读了一堆关于使用 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);
}
}
如果将 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语句
我已经阅读了一堆关于使用 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);
}
}
如果将 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语句