【问题标题】:Use of hasNextLine in Java, won't read NextLine after NextInt在 Java 中使用 hasNextLine,在 NextInt 之后不会读取 NextLine
【发布时间】:2009-09-17 00:04:28
【问题描述】:

我正在努力让它工作

 System.out.println("Please enter what SOCKET NUMBER you" + 
"wish to connect to");   
            int sockname = Integer.parseInt(inFromUser.nextLine());

   System.out.println("Please enter what HOSTNAME you" + 
"wish to connect to");
   String hostname = inFromUser.nextLine();

问题是我无法让主机名等于用户输入的任何内容。我认为它与 hasNext 或它的变体有关,但我不确定。有什么想法吗?

【问题讨论】:

  • 你在主机名中得到了什么?
  • FromUser 中有什么内容?你在使用扫描仪吗?您是否确认 sockname 符合您的预期?如果是这样,那么主机名确实应该得到下一行的文本。

标签: java string integer


【解决方案1】:

nextLine() 之后的输入缓冲区中可能有“\n”,因此下一次调用只是读取它并返回。读取int后需要清空缓冲区

inFromUser.skip("\\n+");

【讨论】:

    【解决方案2】:

    java.io.BufferedReader 有一个 readLine() 方法。用那个。如果您使用 Scanner.nextLine(),那么您应该知道如果您的位置正好在换行符之前,您将得到一个空字符串。但是,下一个 nextLine 确实会返回一整行文本(与 readLine 相同)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-17
      • 1970-01-01
      • 2017-12-19
      • 1970-01-01
      • 2014-11-23
      • 1970-01-01
      • 1970-01-01
      • 2016-12-20
      相关资源
      最近更新 更多