收到输入

时间:2016-07-18 15:18:49

标签: java loops

我编写的代码将大写字母更改为小写字母,反之亦然。我正在尝试使用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 != '.');
    }
}

4 个答案:

答案 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