37

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

7 回答 7

61

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

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

于 2013-10-22T05:30:44.283 回答
16

尝试替换您的代码

String name = scanner.nextLine();

反而

String name = scanner.next();

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

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

于 2013-10-22T05:45:48.630 回答
3

Scanner文档:

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

public String next()

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

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

于 2013-10-22T05:33:52.963 回答
3
 public static void processName(Scanner scanner) {
        System.out.print("Please enter your full name: ");
        scanner.nextLine();
        String name = scanner.nextLine();
        System.out.print(name);
    }

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

于 2018-08-13T16:42:03.103 回答
2

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

于 2013-10-22T05:31:54.997 回答
1

尝试使用这个

String name = scanner.nextLine();
于 2013-10-22T05:33:37.963 回答
0

如果您不想使用.nextLine(),也可以配置.next()\n用作分隔符模式,.useDelimiter()如下所示:

public static void processName(Scanner scanner) {
    System.out.print("Please enter your full name: ");
    scanner.useDelimiter("\n");
    String name = scanner.next();
    System.out.print(name);
}
于 2021-10-21T08:31:09.423 回答