Java循环还没有结束正确
嗨,大家好我尝试退出与此位的代码的循环,但之前结束它仍然打印出来,我不想行:Java循环还没有结束正确
do {
System.out.println("Would you like to change one of the numbers (y/n)?");
choice = kb.next().charAt(0);
System.out.println("Please enter the index of the number you want to change:");
indexChange = kb.nextInt();
System.out.println("Please enter the number you want to change:");
changedIndex = kb.nextInt();
elements[indexChange - 1] = changedIndex;
for (int i = 0; i < elements.length; i++)
System.out.println(index[i] + elements[i]);
} while (choice != 'n');
这两条线还是打印出来在循环结束之前:“请输入您要更改的号码:”&“请输入您要更改的号码:”。你们能协助解决这个问题吗?
您需要使用您的break
循环。在这种情况下,不需要在循环的每次迭代开始或结束时检查choice
,因此您只需使用while (true)
即可循环,直至达到break
。
while (true) {
System.out.println("Would you like to change one of the numbers (y/n)?");
choice = kb.next().charAt(0);
if (choice == 'n')
break;
System.out.println("Please enter the index of the number you want to change:");
indexChange = kb.nextInt();
System.out.println("Please enter the number you want to change:");
changedIndex = kb.nextInt();
elements[indexChange - 1] = changedIndex;
for (int i = 0; i < elements.length; i++)
System.out.println(index[i] + elements[i]);
}
不过要小心。意外写入无限循环很容易!
这将很好地解释为什么从“do-while”循环到“while”循环的变化。尽管如此,我发现这个解决方案比双重检查或双重检查break-condition的if-else更好。 – 2013-02-18 22:43:25
您需要检查处理剩余输入之前退出条件...
do {
System.out.println("Would you like to change one of the numbers (y/n)?");
choice = kb.next().charAt(0);
if (choice != 'n' && choice != 'N') {
System.out.println("Please enter the index of the number you want to change:");
indexChange = kb.nextInt();
System.out.println("Please enter the number you want to change:");
changedIndex = kb.nextInt();
elements[indexChange - 1] = changedIndex;
for (int i = 0; i < elements.length; i++) {
System.out.println(index[i] + elements[i]);
}
}
} while (choice != 'n' && choice != 'N');
您也应该检查资金字符...
这工作但结束程序没有继续下一阶段的代码,尽管下面的while语句完成了工作。感谢您的提示。 – user1766709 2013-02-18 22:54:10
此检查
while (choice != 'n');
只有每do循环迭代出现一次。因此,在你的循环中,你问你是否要更改其中一个数字,然后询问其他问题,然后检查他们输入的值是否为第一个问题。
您可以使用关键字“break”在得到选择后跳出循环.eg。
if (choice == 'n')
{
break;
}
的Try ...
while(!'n'.equals(choice.toLowerCase())){...
使用调试器! – 2013-02-18 22:38:13
这是一个逻辑问题,调试器不会有太大的帮助。铅笔和纸张会更快。 – 2013-02-18 22:38:46
@ A - C那么,像Eclipse和NetBeans中提供的一个好的调试器会向您显示每行每个变量的实际值。您可以使用此信息在同时测试代码的同时查找逻辑错误。 – 2013-02-18 22:39:56