我试图从我的程序的命令框中读取用户输入,并根据用户输入此命令框的内容,程序应输出相应的消息。例如,当用户进入退出时,该程序应该停止,我已经正确实现了这一点。所以我想要实现的是当用户不输入单词:“退出”,“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;
答案 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
}