无法使用hasNext()显示第一个单词

时间:2015-04-05 22:32:00

标签: java java.util.scanner

我正在尝试使用 hasNext ()和循环来分割单词,但它不起作用,这是我的代码,下面是输出

Scanner kb = new Scanner(System.in);

System.out.println("Please enter your full name");
String name = kb.next();

while(kb.hasNext()) {
    System.out.println(kb.next());
}

以下是它显示的输出:

Please enter your full name
John Smith

但它应该显示:

John
Smith

为什么呢?我该如何解决?

2 个答案:

答案 0 :(得分:3)

你这样做:

String name = kb.next();

但你永远不会打印name

如果您只想逐字逐句地输入用户并在单独的行中打印,您可以这样做:

Scanner kb = new Scanner(System.in);
System.out.println("Please enter your full name");

while (kb.hasNext()) {
    System.out.println(kb.next());
}

示例:

John Paul Smith

输出

John
Paul
Smith

答案 1 :(得分:0)

您对kb.next的初始调用会从队列中弹出“John”。然后,您输入一个循环并从kb.next打印 next return语句,即“Smith”。请尝试以下方法,

System.out.println("Please enter your full name");
Scanner kb = new Scanner(System.in);

while (kb.hasNext()) {
    System.out.println(kb.next());
}