2014-03-29 29 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