所以。我正在做一个关于Java的教程,并正在玩制作D&D字符表保护程序。我遇到的问题不是严重的问题,但是在我命令它加载后,它按预期方式执行了该消息,但是当我输入“ new”并按Enter时,它一直等到我再次按Enter才执行其他代码,而不是我的如果为“新”。我最终不得不再次输入。

do {
        if (command.equalsIgnoreCase("new")) {
            System.out.println("Let's create a character!\n");


然后是其他无关紧要的代码,然后:

    // LOAD CHARACTER
        else if (command.equalsIgnoreCase("load")) {
            // placeholder for load char.
            System.out
                    .println("This is where we will load a character in the     future.  For now it is empty, please select new.");
            command = text.nextLine();
            // EXIT CODE
        } else if (command.equalsIgnoreCase("exit")) {
            System.exit(0);

            // Invalid Response
        } else
            System.out.println("Invalid response. Please try again. ");
        command = text.nextLine();
    } while (!command.equalsIgnoreCase("exit"));


结果如下:

请为新角色说“新建”,或说“加载”以加载以前保存的角色...加载这是我们将来加载角色的地方。目前它为空,请选择new.newInvalid响应。请再试一遍。 new创建一个角色!这个角色的名字是什么?

最佳答案

在“加载” if部分和循环末尾都有command = text.nextLine();。第一个输入在if块中,然后读取空白行,这是下一轮在if / else流中进行比较的内容。

最好将输入读数放置在if-else链之外,因为在每个else块中没有重复的代码。

do {
    if (command.equalsIgnoreCase("new")) {/*do new stuff*/}
    else if (command.equalsIgnoreCase("load")) {/*do load stuff*/}
    else if (command.equalsIgnoreCase("exit")) {/*do exit stuff*/}
    else {/*do default/bad input stuff*/}

    //This line runs every loop iteration(unless one of your if blocks calls break or exit
    command = text.nextLine();
} while (!command.equalsIgnoreCase("exit"));

10-05 22:36
查看更多