切换语句和While循环

时间:2013-12-03 20:12:56

标签: java while-loop switch-statement do-while

我正在编写一个数据库程序,允许用户搜索员工,并为他们打开一个菜单。在我的Main()中我必须提示用户按m打开菜单()或q到打开finalStats()任何其他输入都是无效的。我的问题是我无法让while循环正常工作。无论何时我点击它都可以工作,当我点击q它工作正常,但每当我点击一个键以外的那里有一个无限循环,它只是无限打印出“请输入一个有效的字符”

boolean end = false;
    System.out.println("Enter m or M to open menu, otherwise enter q or Q for the final stats");
    String entered = scan.next();
    while (end == false)
    switch(entered)
    {
    case "m":
    case "M":
        menu();
    case "q":
    case "Q":
        finalStats();
        end = true;
    default:
        System.err.println("Please enter a valid character");
    }

3 个答案:

答案 0 :(得分:2)

您需要移动线

while (end == false)

scan.next()之前,以允许用户再试一次。确保在执行此操作时添加大括号,因此while会影响您显示的整个程序代码段。对于循环和if语句,始终使用花括号被认为是一种好习惯。

另外,正如@RahulTripathi指出的那样,您需要在break块的末尾添加case语句。

答案 1 :(得分:0)

您遗漏了break中的switch case声明。同时移动while语句以允许用户扫描。

试试这个:

boolean end = false;
while (end == false)
    System.out.println("Enter m or M to open menu, otherwise enter q or Q for the final stats");
    String entered = scan.next();

    switch(entered)
    {
    case "m":
    case "M":
        menu(); 
        break;
    case "q":
    case "Q":
        finalStats();
        end = true;
        break;
    default:
        System.err.println("Please enter a valid character");
    }

答案 2 :(得分:0)

我认为这可以解决您的问题:

boolean end = false;
System.out.println("Enter m or M to open menu, otherwise enter q or Q for the final stats");
String entered = scan.next();
while (end == false)
{
switch(entered)
    {
    case "m":
    case "M":
        menu();
        break;
    case "q":
    case "Q":
        finalStats();
        end = true;
        break;
    default:
        System.err.println("Please enter a valid character");
        break;
    }
    System.out.println("Enter m or M to open menu, otherwise enter q or Q for the final                     stats");
    String entered = scan.next();
}

你有几个问题。您在案例中缺少break;,并且您没有在while循环中请求新输入。我不确定你是否想要多次征求一个选项。