2012-05-13 44 views
1

我目前有一個If語句,用於檢查文檔中的下一個單詞是否等於特定長度。在它返回true後,我希望它將該單詞添加到數組或字符串等。我的問題是一旦我使用next()命令,它會繼續到文檔中的下一個值,即使我在條件如果聲明。我對Java有點新,所以我希望這個簡單的點擊是有道理的。Java掃描儀 - 如何在使用next()後返回最後一個單詞()

Scanner in1 = new Scanner(inputFile); 
String inputString; 

while(in1.hasNextLine()){ 
    if(in1.next().length() == 6){ 
      inputString = in1.next(); 
    } 
} 

基本上我有一個文件包含幾個單詞,所有不同的長度在多行上。我想抓住有6個字符的單詞。實際的while循環和文件更復雜,問題在於它在評估If語句後跳轉到下一個單詞。因此,如果它檢測到下一個單詞有6個字符,它會將後面的單詞加載到變量中。歡迎任何幫助或建議!

回答

2

最多可以拆分這個循環分爲兩個部分:

  1. 獲取下一個令牌和存儲,並
  2. 使用緩存的令牌。

例如:

while(in1.hasNextLine()) { 
    String current = in1.next(); 
    if(current.length() == 6) { 
      inputString = current; 
    } 
} 

這是一個標準技術使用迭代器或掃描儀用於精確你已經指出的原因時 - 所述next()方法不能而不產生不同的值被調用多次。另外,其他編程語言設計了它們的迭代器,以便獲取值迭代並前進到下一個位置是分開的步驟。值得注意的是,C++ STL認爲這些是不同的操作。

希望這會有所幫助!

+0

非常感謝你!是一個簡單的邏輯我在想什麼! – RedHatcc

2

next()的值捕獲到變量中,執行比較,將inputString設置爲該變量。如果長度不正確,接下來的任何內容都可以使用相同的變量,從而避免額外增加額外的next()。不知道這是否你需要它。

+0

你是對的。這是要使用的邏輯。簡單,但有時可能會被過度思考。謝謝! – RedHatcc