Java 扫描器不断循环空输入

Java 扫描器不断循环空输入,java,java.util.scanner,Java,Java.util.scanner,出于某种原因,我遇到了这样一个问题:扫描器一直得不到任何输入,不等待用户实际输入任何内容,从而导致无限循环。这就是我的代码的样子: Scanner kb = new Scanner(System.in); //Takes user input System.out.println("Please enter your name"); String input = ""; if(kb.hasNextLine()

出于某种原因,我遇到了这样一个问题:扫描器一直得不到任何输入,不等待用户实际输入任何内容,从而导致无限循环。这就是我的代码的样子:

Scanner kb = new Scanner(System.in); //Takes user input
        System.out.println("Please enter your name");
        String input = "";
        if(kb.hasNextLine())
        {
            input = kb.nextLine();
        }
        while(input.isEmpty())
        {
           System.out.println("Please try again: ");
           if(kb.hasNextLine())
           input = kb.nextLine();
        }
        System.out.println(input);

我知道如果我使用kb.next()而不是nextLine,由于缓冲区的原因可能会出现问题,但情况似乎并非如此。我很困惑,认为这应该足够简单,但不幸的是,事实并非如此。它为我做的只是一遍又一遍地打印“请再试一次”,而不必等待我的输入。任何帮助都将不胜感激。

您会收到“一遍又一遍”的消息,因为您有一个
kb.hasNextLin()
检查,返回
false
。这将导致无休止的
while()
循环。只需删除
hasNextLine()
检查。只需初始化
input=null即可work@Progman不幸的是,这不起作用。相反,它会抛出一个错误“找不到行”,这通常发生在没有输入的情况下,但它也不会在抛出错误之前等待任何输入。@SumitSingh很遗憾,这没有任何区别,当我尝试您的建议时,它在调用的while循环中抛出了一个错误。isEmpty在一个空变量上。我还尝试从Progman的建议中删除if(kb.hasNextLine()),但在请求第一个输入时,它也只是得到一个“找不到行”错误。@N4V3H3114如何启动java应用程序?看起来您不是从键盘读取用户输入,而是从文件读取。