我正在使用扫描仪来检测用户的输入,其想法是用户可以输入" help"或"测试"随时进入终端显示输出。
到目前为止,我的代码工作正常,因为我必须按两次输入才能在输入时查看输出。这就是我到目前为止:
import java.util.Scanner;
public class Game
{
static Scanner command = new Scanner(System.in);
public static void main(String[] args)
{
GAME:
while (var.running == true)
{
check.controls();
command.nextLine();
}
}
}
public class check extends Game
{
public static void controls()
{
if (command.next().equals("help"))
{
System.out.println("This is the help Menu");
}
else if (command.next().equals("test"))
{
System.out.println("fail");
}
}
}
我的问题是在输入" help"然后立即输入" test"注意到第一次注册。
答案 0 :(得分:1)
问题是,在班级check
中,您要扫描两次以查看输入的数据是否等于test
。因此,假设您输入test
,第一个条件将显示为test
,并将使用字符串help
对其进行评估,因此条件为false,那么它将对第二个条件执行相同操作再次询问另一个输入,如果您这次输入test
,它将使用test
对其进行评估,条件为真。
以下是解决问题的方法:
class check extends Game
{
public static void controls()
{
String commands = command.next();
if (commands.equals("help"))
{
System.out.println("This is the help Menu");
}
else if (commands.equals("test"))
{
System.out.println("fail");
}
}
}
所以基本上,您不需要扫描next()
两次,一次执行并使用if else if
语句对其进行评估