Java:使用需要重复输入的scanner.nextLine()。equals(“example”))

时间:2015-03-21 19:53:01

标签: java eclipse macos

我正在使用扫描仪来检测用户的输入,其想法是用户可以输入" 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"注意到第一次注册。

1 个答案:

答案 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语句对其进行评估