![](/img/trans.png)
[英]Do-While loop on user input - check if input is not empty or int (java)
[英]Using a do-while loop to check a User's input in Java
我正在尝试使用Java创建一个简短的基于文本的冒险游戏。
我是一名新手程序员,所以我的方法可能不是最有效的,但是我仅使用到目前为止从学校课程中学到的知识。
我的问题出现在询问用户输入之后。
import java.util.Scanner;
public class House
{
public static void main(String[]args)
{
System.out.println("You have just moved into your new house.");
System.out.println("What do you do next?");
Scanner scan = new Scanner(System.in);
String input = scan.next();
do
{
if(input.equals("enter") || input.equals("Enter"))
{
System.out.println("You have entered the house.");
}
else if(input.equals("leave") || input.equals("Leave"))
{
System.out.println("You left and never came back.");
System.out.println("The End");
System.exit(0);
}
else
{
System.out.println("I don't know how to "+input);
System.out.println("Try again");
System.out.println("What do you do next?");
input = scan.nextLine();
}
}
while(!input.equals("enter") || !input.equals("Enter") || !input.equals("leave") || !input.equals("Leave"));
}
}
如果用户输入“ leave”,“ Leave”或未知命令,程序将按预期工作。 当用户输入“ enter”或“ Enter”时,会发生此问题
只要输入等于“ enter”或“ Enter”,do-while循环中的条件就应使程序退出循环,但程序将陷入无限循环。
该程序将简单地重复“您已进入房屋”。 一遍又一遍。
为什么会出现此问题? 我不知道我在做什么错。
谢谢!
更改为
...
String input;
do
{
input = scan.next();
if(input.equals("enter") || input.equals("Enter"))
{
System.out.println("You have entered the house.");
}
...
由于您没有在“ enter”块内更改输入变量的值,因此,当该块被点击时,它将继续循环并无限期地返回到那里。
您可以在循环中提示用户输入,也可以在“输入”块中添加一个break语句。
在这种情况下,我将选择后者,因为它不会像在循环内移动输入提示那样剧烈地改变代码的行为。
if(input.equals("enter") || input.equals("Enter"))
{
System.out.println("You have entered the house.");
//break;
// or use system.exit as in your other block
System.exit(0);
}
仅供参考,而不是:
if(input.equals("enter") || input.equals("Enter"))
采用
input.equalsIgnoreCase("enter")
它将消除您的“或”子句,并缩短您的代码
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.