正确使用Scanner及其方法

时间:2014-03-29 00:04:41

标签: java java.util.scanner

我不知道我做错了什么......这是我的代码:

    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

我很感激你的帮助!



更新: 我需要这个代码用于这种输入:

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

1 个答案:

答案 0 :(得分:0)

您可能每次循环调用next两次。

只需存储一次,稍后再使用它,因此当您只想推进一个令牌时,不要提前两个令牌。

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