2013-04-06 46 views
0

這應該是一個非常基本的程序,但我是Java新手。我希望能夠使用掃描儀在控制檯中輸入多個字符串來檢測它們。到目前爲止,我已經能夠正確地獲得輸入部分,我希望程序以這樣的方式運行,即在輸入空格時顯示結果,而不是字符串。奇怪的是,我只能在返回兩次時獲得結果,但是,當有超過4次輸入時會返回一次。我的櫃檯應計算輸入的「課程」數量並將其顯示在結果中,但它會給出不準確的讀數。在循環體內曾經在while循環表達式,並再次 -掃描儀沒有檢測到空行和計數器不準確

import java.util.Scanner; 

public class Saturn 
{ 

    static Scanner userInput = new Scanner(System.in); 

    public static void main(String[] args) 
    { 

     System.out.println("For each course in your schedule, enter its building"); 
     System.out.println("code [One code per line ending with an empty line]"); 

     String input; 
     int counter = 0; 

     while (!(userInput.nextLine()).isEmpty()) 
     { 
      input = userInput.nextLine(); 
      counter++; 
     } 


     System.out.println("Your schedule consits of " + counter + " courses"); 
    } 
} 
+4

每個'nextLine()'讀取一個新行。它不會重用在條件中讀取的那個。 – chris 2013-04-06 20:38:05

回答

2

你打電話Scanner#nextLine兩次。您只需從while循環表達式中分配input即可。此外,還可以使用Scanner#hasNextLine抵禦NoSuchElementException發生:

while (userInput.hasNextLine() && 
     !(input = userInput.nextLine()).isEmpty()) { 
    System.out.println("Course accepted: " + input); 
    counter++; 
} 
+0

啊!完善。這工作 – Marcus 2013-04-06 21:25:19

+0

@Marcus看到更新關於'掃描儀#hasNextLine' – Reimeus 2013-04-07 13:54:55

+0

我看,我甚至沒有測試過這種邊緣情況。再次感謝 – Marcus 2013-04-07 17:15:02