我正在尝试使用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"));
}
}
如果用户输入"离开","离开"或未知命令,程序将按预期工作。当用户输入"输入"或"输入"
我的do-while循环中的条件应该使程序退出循环,只要它们的输入等于"输入"或"输入",但程序陷入了无限循环。
程序将重复,"你已经进入了房子。"一遍又一遍。
为什么会出现这个问题?我不知道我做错了什么。
谢谢!
答案 0 :(得分:3)
将其更改为
...
String input;
do
{
input = scan.next();
if(input.equals("enter") || input.equals("Enter"))
{
System.out.println("You have entered the house.");
}
...
答案 1 :(得分:0)
由于您未在&#34中更改输入变量的值,请输入"阻止,当该块被击中时,它将继续循环并最终无限期地返回那里。
您可以提示您的用户在循环中输入,或者在您的"输入"中添加中断语句。块。
在这种情况下,我会选择后者,因为它不会像在循环中移动输入提示一样彻底改变代码的行为。
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);
}
答案 2 :(得分:0)
仅供参考,而不是:
if(input.equals("enter") || input.equals("Enter"))
使用
input.equalsIgnoreCase("enter")
它会消除你的“或”条款并稍微缩短你的代码