如何修复nextLine()命令,以便它不会占用剩余的" / n"当你按回车键?

时间:2014-10-25 19:54:10

标签: java eclipse

在我遇到问题之前,我有几个nextLine声明。

    System.out.println("Welcome to the game of BlackJack!");
    System.out.println("Would you like to play? (Y/N)");
    play = in.nextLine();

    gameResponse = false;
    while (gameResponse == false)
    {
        //if satements, no nextLine under them
        else 
        {
            System.out.println("Invaild response. Enter Y for yes or N for no.");
            play = in.nextLine();
        }

几行后,我有这行代码:

hitResponse = false;
        while (hitResponse == false)
        {
            System.out.println("Would you like to take a hit(H) or stand(S)?");
            String hitStand = in.nextLine();

控制台打印出来:

  

你想击中(H)还是站立(S)?

     

Invaild回复,请输入'h'或's'

     

你想击中(H)还是站立(S)?

任何帮助都是适当的:)

2 个答案:

答案 0 :(得分:0)

使用一个额外的in.nextLine()消费"\n"

答案 1 :(得分:0)

似乎执行在输入缓冲区中使用换行符击中了支持输入代码,可能只是换行符。

最简单的方法是使用Scanner#next()将所有输入作为字符串读取,这将自动处理(并使用)换行符。

使用各种输入敏感的扫描仪方法(例如nextInt())来读取人类输入是一个坏主意;只导致脆弱和冗长的代码。