2011-10-30 59 views
12

在我當前的程序中,有一種方法要求用戶輸入作爲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只會產生「閃閃」。

任何幫助將不勝感激!

回答

27

nextLine()更換next()

String productDescription = input.nextLine(); 
+5

你打我8秒+1 –

+0

太棒了。非常感謝!這工作:) – Kristian

8

使用input.nextLine();而不是input.next();

+0

謝謝。這工作就像一個魅力:) – Kristian

3

javadocs for Scanner回答你的問題

掃描儀打破了它的投入使用定界符模式, 令牌這默認情況下匹配空白。

你可能會做這樣的事情

Scanner s = new Scanner(); 
s.useDelimiter("\n"); 
+2

當nextLine()是專門爲這種情況編寫和解決所有整齊地爲什麼混亂? –

1

input.next更改掃描儀使用的是默認空白模式()接受輸入字符串的第一個whitsepace分隔的字。所以通過設計,它可以完成你所描述的內容。嘗試input.nextLine()

+0

非常感謝!它現在工作:) – Kristian

1

Javadoc救援:

掃描儀打破了它的投入使用定界符模式, 令牌在默認情況下匹配空白

nextLine可能是你應該使用的方法。