扫描仪在空间后看不到

时间:2013-10-22 05:29:13

标签: java java.util.scanner

我正在编写一个程序,询问该人的全名,然后接受该输入并将其反转(即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);
}

6 个答案:

答案 0 :(得分:48)

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

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

答案 1 :(得分:15)

尝试替换您的代码

String name = scanner.nextLine();

代替

String name = scanner.next();

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

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

答案 2 :(得分:3)

来自Scanner文档:

  

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

  

public String next()

     

查找并返回此扫描仪的下一个完整令牌。完整的标记之前和之后是与分隔符模式匹配的输入。

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

答案 3 :(得分:2)

scanner.next();只接受下一个字。 scanner.nextLine();应该有效。希望这有帮助

答案 4 :(得分:1)

尝试使用此

String name = scanner.nextLine();

答案 5 :(得分:1)

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

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