我编写的代码将大写字母更改为小写字母,反之亦然。我正在尝试使用break
,这样只要输入为'.'
,我就可以退出循环,但它似乎不起作用。任何意见,将不胜感激!我还想创建循环在结束之前重复的所有时间的计数。我该怎么做呢?
public static void main(String[] args) throws java.io.IOException {
char choice, ignore = 0;
for (; ; ) {
do {
System.out.print("Please enter a upper or " + "lower case letter(. to quit)");
choice = (char) System.in.read();
if ((char) choice > 64) {
ignore = (char) (choice + 32);
}
if ((char) choice > 96) {
ignore = (char) (choice - 32);
}
System.out.print(ignore);
System.out.println("\n");
if (choice == '.') {
break;
}
do {
ignore = (char) System.in.read();
} while (ignore != '\n');
} while ((char) choice > 64 | (char) choice < 123 | choice != '.');
}
}
答案 0 :(得分:1)
问题是你有一个嵌套循环。您的for (; ; )
将不会退出,因为break
只能退出:
do {
//other code
} while ((char) choice > 64 | (char) choice < 123 | choice != '.');
您有几个选项,但最简单的方法是将for循环更改为:
while(choice != '.'){
//do other code
}
这样,当达到break
时,您的代码将退出do while
并在下一个循环退出while
。
请记住,使用此技术时,您必须使用值初始化choice
。
答案 1 :(得分:0)
你在永久的for循环中有一个do-while循环。 break
语句会让你脱离do-while循环,但你仍然处于for循环中。它将再次重新进入do-while循环并继续前进。
答案 2 :(得分:0)
即使你的while循环中断,for循环也会一直运行。一个修复可能是在for循环中添加终止条件。
for (; choice != '.'; )
请确保初始化选择变量,否则在编译期间会抛出错误。
答案 3 :(得分:0)
stackoverflow.com/q/886955/4793951 打破标签 谢谢! @Zircon