2014-03-29 44 views
0

我不知道我做錯了什麼......這是我的代碼:正確使用掃描儀和他的方法

String str = "Stan: " + System.getProperty("line.separator") + "2 . 3 | 1"; 
    Scanner src = new Scanner(str).useDelimiter("\\s*[Stan:]+\\s*|\\s*[|]\\s+|\\p{javaWhitespace}+"); 
    while(src.hasNext()) { 
     if(src.next().equals(".")) { 
      System.out.println("0"); 
     } else { 
      System.out.println(src.next()); 
     } 
    } 

    src.close(); 

而且我得到這個:

. 
1 

如果我刪除其他{}我會得到0,什麼是正確的。

我想要什麼?使用完整的代碼上面,我想在這個輸出拿到,但每個號碼應該是int類型:

2 
0 
3 
1 

我會感謝您的幫助傢伙!



UPDATE: 我需要這種投入這段代碼:

Some text with spaces: 
1 . 3 | 2 . . 
------------- 
8 2 . | 9 . . 
+0

我不明白這個問題的更新。 – anu

+0

在這個輸入中,我在文本之間有空格,但在之前的輸入中,我只有一個單詞...而且我不想爲每個單詞創建模式。是否有可能省略所有文字 - 所有字母?只讀點和數字? – Lui

回答

0

您可能調用next兩次,每次循環。

只需存儲一次並稍後多次使用它,那麼當您只想提前一個令牌時,您不會前進兩個令牌。

String next = src.next(); 
if(next.equals(".")) { 
    System.out.println("0"); 
} else { 
    System.out.println(next); 
} 
+0

我更新了我的問題。看一下這個 ;) – Lui