如何继续询问用户输入直到用户选择退出?

时间:2016-01-10 20:51:15

标签: java switch-statement

我试图做出选择"菜单,我在哪里使用开关/案例功能让用户选择。我的代码中的问题是我希望它一直要求输入,直到用户键入" sair"这意味着"退出"在葡萄牙语。当他们输入" ajuda"这意味着"帮助"他们得到了一个可执行命令的列表,但是如果用户键入" ajuda"那么" sout"执行完成,程序结束,程序结束...... 我的目标是让它一直运行直到我们选择停止,我认为有一些方法使用readln或类似的。

无论如何,这里有关于选择的代码块:

 public static String escolha() {

    Scanner userInput = new Scanner(System.in);
    String strEscolha = userInput.next();
    boolean sair = false; 

    do {
        switch (strEscolha) {
            case "ajuda":
                System.out.println("Comandos disponiveis:");
                System.out.println("Ajuda; Fogo; Jogo; Resposta; Estado; Acaso; Reset; Sair;");
                break;

            case "Ajuda":
                System.out.println("Comandos disponiveis:");
                System.out.println("Ajuda; Fogo; Jogo; Resposta; Estado; Acaso; Reset; Sair;");
                break;

            case "sair":
                System.out.println("Obrigado por jogar!");
                sair = true;
                break;

            default:
                System.out.println("Comando Invalido!");
                continue;

        }

    } while (sair == false);

    return null;

}

如果有人有一个简单的方法让它继续要求命令,请告诉我:( 提前致谢!! PS:我刚刚开始,请不要判断,我对java的了解是可以忽略的:\

2 个答案:

答案 0 :(得分:1)

首先,删除System.exit,否则您将关闭整个JVM而不执行后续代码(您的IDE可能已经向您发出了死代码警告)。

其次,您需要使用sair == false(或更好,!sair)而不是sair = false。前者是比较;后者是一项任务,使sair成为假。

do { ... } while (false)将执行一次循环体,但不会重复。

第三,return strEscolha;之前的while将导致方法在尝试循环之前返回,因此应该将其删除。

答案 1 :(得分:0)

您的代码的主要问题是您不会在' ajuda'中请求用户输入。情况下。

以下代码包含一些细微的更改以及一些注释和建议:

    // if your method isn't supposed to return anything, simply make it void
public static void escolha() {
    Scanner userInput = new Scanner(System.in);
    // print some useful information when the application starts, so that the user knows
    // what to do
    System.out.println("Comandos disponiveis:");
    System.out
            .println("Ajuda; Fogo; Jogo; Resposta; Estado; Acaso; Reset; Sair;");
    String strEscolha = userInput.next();
    boolean sair = false; 

    do {
        // remove duplicate case by converting the input to lower letters
        switch (strEscolha.toLowerCase()) {
        case "ajuda":
            System.out.println("Comandos disponiveis:");
            System.out
                    .println("Ajuda; Fogo; Jogo; Resposta; Estado; Acaso; Reset; Sair;");
            // read the user input
            strEscolha = userInput.next();
            System.out.println(strEscolha);
            break;
        case "sair":
            System.out.println("Obrigado por jogar!");
            sair = true;
            break;
        default:
            System.out.println("Comando Invalido!");
        }

    } while (sair == false);
    // do not forget to close the scanner, it might cause a memory leak
    userInput.close();
}