从用户命令获取输入并使用.equals

时间:2017-02-26 22:49:50

标签: java

我试图从我的程序的命令框中读取用户输入,并根据用户输入此命令框的内容,程序应输出相应的消息。例如,当用户进入退出时,该程序应该停止,我已经正确实现了这一点。所以我想要实现的是当用户不输入单词:“退出”,“ROLL”,“属性”,“购买”,“帮助”“完成”,“平衡”程序应该替换错误消息。 我需要命令同时工作,以便如果输入任何7个命令,则返回适当的消息

到目前为止,这是我的代码:谢谢,

private void echo () {
        String command ;
        String command2;
        ui.display();
        ui.displayString("ECHO MODE");
        do {
            command = ui.getCommand();
        ui.displayString(command);
        } while (!command.equals("quit"));
        {
            ui.displayString("The game is over.");
        }
        do{
            command = ui.getCommand();
            ui.displayString(command);
        }while (!command.equals("help")||(!command.equals("buy"))||(!command.equals("roll"))||(!command.equals("done"))||(!command.equals("property"))||(!command.equals("balance")));
        {
            ui.displayString("Please enter a valid command");
        }


        return;

1 个答案:

答案 0 :(得分:0)

你上次执行/ while的情况看起来差不多,但应该使用&&而不是||:当命令输入不是第一个预期的时候,你想显示错误信息,而不是第二个预期的等等。

更漂亮的语法是使用List个已接受的命令并检查它是否包含收到的命令:

List<String> acceptedCommands = new ArrayList<>();
acceptedCommands.add("help");
acceptedCommands.add("quit");
// [...]

do { command = ui.getCommand(); }
while (!acceptedCommands.contains(command));

请注意,很少使用do / while结构(尽管有时它可能比标准更合适)并且您似乎滥用它;你使用了两次相同的模式:

do { actions }
while (condition)
{ more actions }

这可能没有做你想要的,因为最后一个块不是do / while的一部分,而只是一个匿名代码块,有自己的范围但不是很多。

经过讨论,我认为你想要的是:

private void echo() {
    String command = null;

    while (!"quit".equals(command)) {
        command = ui.getCommand();
        if (!acceptedCommands.contains(command)) {
            ui.displayString("Please enter a valid command");
        } else if (!"quit".equals(command)) {
           // handle other commands
        }
    }
    ui.displayString("The game is over.");
    // no need for "return;", it's implicit
}