扫描仪只读取第一个单词而不是行

时间:2011-10-30 17:49:50

标签: java string java.util.scanner

在我当前的程序中,一种方法要求用户输入产品描述作为String输入。但是,当我稍后尝试打印此信息时,只显示String的第一个单词。可能是什么原因造成的?我的方法如下:

void setDescription(Product aProduct) {
    Scanner input = new Scanner(System.in);
    System.out.print("Describe the product: ");
    String productDescription = input.next();
    aProduct.description = productDescription;
}

因此,如果用户输入的是“带有橙味的苏打汽水”,System.out.print只会产生“闪闪发光”。

任何帮助将不胜感激!

5 个答案:

答案 0 :(得分:26)

next()替换为nextLine()

String productDescription = input.nextLine();

答案 1 :(得分:10)

使用input.nextLine();代替input.next();

答案 2 :(得分:3)

javadocs for Scanner回答您的问题

  

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

您可以通过执行类似

的操作来更改扫描程序正在使用的默认空白模式
Scanner s = new Scanner();
s.useDelimiter("\n");

答案 3 :(得分:1)

input.next()接受输入字符串的第一个以whitsepace分隔的单词。因此,通过设计,它可以完成您所描述的内容。试试input.nextLine()

答案 4 :(得分:1)

Javadoc救援:

  

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

nextLine可能是您应该使用的方法。