Java 在接收输入的特定字符时停止循环
我编写了将大写字母更改为小写字母的代码,反之亦然。我正在尝试使用Java 在接收输入的特定字符时停止循环,java,loops,Java,Loops,我编写了将大写字母更改为小写字母的代码,反之亦然。我正在尝试使用中断,以便在输入为”时退出循环。,但它似乎不起作用。任何建议都将不胜感激!我还想创建循环结束前重复的所有时间的计数。我该怎么做呢 public static void main(String[] args) throws java.io.IOException { char choice, ignore = 0; for (; ; ) { do { System.out.pr
中断
,以便在输入为”时退出循环。
,但它似乎不起作用。任何建议都将不胜感激!我还想创建循环结束前重复的所有时间的计数。我该怎么做呢
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 != '.');
}
}
publicstaticvoidmain(字符串[]args)抛出java.io.IOException{
字符选择,忽略=0;
对于(;;){
做{
System.out.print(“请输入大写字母或“+”小写字母(.to quit)”);
choice=(char)System.in.read();
如果((字符)选项>64){
忽略=(字符)(选项+32);
}
如果((字符)选项>96){
忽略=(字符)(选项-32);
}
系统输出打印(忽略);
System.out.println(“\n”);
如果(选项=='。){
打破
}
做{
ignore=(char)System.in.read();
}while(忽略!='\n');
}而((char)choice>64 |(char)choice<123 | choice!=');
}
}
在永久for循环中有一个do-while循环。break
语句将使您脱离do-while循环,但您仍然处于for循环中。它将再次重新进入do while循环并继续运行 问题是您有一个嵌套循环。(;;)的将不会退出,因为中断
将仅从以下位置退出:
do {
//other code
} while ((char) choice > 64 | (char) choice < 123 | choice != '.');
这样,当达到中断
时,您的代码将退出do while
,并在下一个循环中退出while
请记住,使用此技术,您必须使用值初始化选项。即使while循环中断,for循环也会永远运行。一种修复方法是在for循环中添加终止条件
for (; choice != '.'; )
请确保初始化choice变量,否则它将在编译期间抛出错误。stackoverflow.com/q/886955/4793951
打破标签
谢谢@锆石对(;;)
循环使用do-while循环,而不是。
应该更好地组合逻辑,以避免需要中断的“无限循环”。如果使用嵌套循环,循环应有条件结束。请参阅以获取建议。@zron该问题可能会回答这里的主要问题,但OP应该去掉外环来解决他的问题,因为问题是外环,而不是中断@Tom我同意,链接问题中的答案也建议这样做。
for (; choice != '.'; )