【问题标题】:Scanner doesn't see after space扫描仪看不到空格
【发布时间】:2022-12-11 22:51:49
【问题描述】:

我正在编写一个程序,询问此人的全名,然后获取该输入并将其反转(即 John Doe - Doe,John)。我开始尝试只获取输入,但它只获取名字。

这是我的代码:

public static void processName(Scanner scanner) {
    System.out.print("Please enter your full name: ");
    String name = scanner.next();
    System.out.print(name);
}

【问题讨论】:

    标签: java java.util.scanner


    【解决方案1】:

    更改为 String name = scanner.nextLine(); 而不是 String name = scanner.next();

    在此处查看有关文档的更多信息 - next()nextLine()

    【讨论】:

    • 感谢您的快速响应,真的很有帮助。
    • 我遇到了同样的问题,但我使用 nextLine() 的字符串最终为空。这是我的代码的样子:System.out.print("License plate: "); String license = sc.nextLine();。发布此答案后扫描仪是否发生变化?
    • 嗨亚历克斯,请在这里找到我的答案,看看是否有帮助 - stackoverflow.com/a/64991271/5345105
    【解决方案2】:

    尝试替换您的代码

    String name = scanner.nextLine();
    

    反而

    String name = scanner.next();
    

    next()只能读取space之前的输入。它无法读取由space 分隔的两个单词。此外,next() 在读取输入后将光标放在同一行。

    nextLine() 读取输入,包括单词之间的 space(即,它读取到行尾 )。读取输入后,nextLine() 将光标定位在下一行。

    【讨论】:

    • next() 只能读取输入直到空格.它无法读取由 a 分隔的两个单词空格.空格包括空格、制表符和换行符
    【解决方案3】:

    来自 Scanner 文档:

    Scanner 使用分隔符模式将其输入分解为标记,默认情况下匹配空格。

    public String next()

    从该扫描器中查找并返回下一个完整的标记。完整的标记前后是与定界符模式匹配的输入。

    这意味着默认情况下,分隔符模式是“空白”。这会在空格处拆分您的文本。使用nextLine() 获取整行。

    【讨论】:

      【解决方案4】:
       public static void processName(Scanner scanner) {
              System.out.print("Please enter your full name: ");
              scanner.nextLine();
              String name = scanner.nextLine();
              System.out.print(name);
          }
      

      尝试上面的代码扫描仪应该能够读取空间并移动到字符串的下一个引用

      【讨论】:

      【解决方案5】:

      scanner.next(); 只接受下一个单词。 scanner.nextLine(); 应该可以。希望这可以帮助

      【讨论】:

        【解决方案6】:

        如果您不想使用.nextLine(),您还可以使用.useDelimiter()方法将.next()配置为使用 作为分隔符模式,如下所示:

        public static void processName(Scanner scanner) {
            System.out.print("Please enter your full name: ");
            scanner.useDelimiter("
        ");
            String name = scanner.next();
            System.out.print(name);
        }
        

        【讨论】:

          【解决方案7】:

          尝试使用这个

          String name = scanner.nextLine();
          

          【讨论】:

            猜你喜欢
            • 2013-10-30
            • 1970-01-01
            • 2011-05-09
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多