2012-07-12 178 views
0

可能重複:
java, programm not stopping for scan.nextLine()Java scan.nextLine()僅等待用戶輸入int用戶輸入;不等待字符串用戶輸入

System.out.println("Welcome to the Tuition Calculator Program."); 
    System.out.println("How many total credits are you taking?"); 
    credits = scan.nextInt(); 

    System.out.println("Are you a Washington resident? y/n"); 
    resident = scan.nextLine(); 

    System.out.println("Are you a graduate student? y/n"); 
    grad = scan.nextLine(); 

我新的Java和相對較新的編程。在使用jGRASP的個人電腦上。在上面的代碼中,我只需要用戶輸入學分數(int響應),居住(字符串)和畢業生狀態(字符串)。

它允許用戶輸入學分,但是一起打印居民問題和畢業生問題。它不會停止並允許用戶輸入對居住問題的答案。 (它的確允許我輸入我對畢業生問題的回答。)

這個論壇上的其他相關問題沒有幫助;我已經嘗試添加額外的行來吞下任何額外的換行符,但那還沒有完成。也許我添加了錯誤的類型。 This thread很有幫助,但沒有提供可行的解決方案。

+0

鏈接線程中的答案完全正確。到處使用'nextLine'和'Integer.parseInt'來轉換爲整數。 – 2012-07-12 03:07:15

回答

1

這是爲什麼發生?
如果您嘗試打印resident,您會發現它會打印newline字符。 其實這裏發生的是這個。輸入credits後輸入的字符串被複制到resident變量中。所以你需要的是避免換行符。

使用nextLine()並解析它使用Integer.parseInt()整數讀取credits

System.out.println("Welcome to the Tuition Calculator Program."); 
    System.out.println("How many total credits are you taking?"); 
    credits = Integer.parseInt(scan.nextLine()); 
    System.out.println("Are you a Washington resident? y/n"); 
    resident = scan.nextLine(); 
    System.out.println("Are you a graduate student? y/n"); 
    grad = scan.nextLine(); 
+0

謝謝cdev,這是一個很好的解釋。這裏類似問題的答案似乎表明,從int用戶輸入切換到字符串用戶輸入時,總會發生這種情況。我會注意的。 – user1519533 2012-07-12 04:32:43