1

我有一个字符串currLine = "0 1435 " 3029 " "(1975.92)" " 72,304""(字符串中有引号),我想打印出 currLine 中的所有整数。但是使用下面的代码,我只能打印出数字 0。如何使用 nextInt() 以便打印出所有整数?

        Scanner scanLine = new Scanner(currLine);           
        while (scanLine.hasNext()) {
            if (scanLine.hasNextInt()) {
                System.out.println(scanLine.nextInt());
            }
            scanLine.next();
        }
4

3 回答 3

4

一旦Scanner遇到不是 int 的东西,就hasNextInt()返回false。更不用说您在-loopscanLine.next()底部的调用中跳过了一些有效的整数。while您可以使用 aMatcher代替:

Matcher m = Pattern.compile("\\d+").matcher(currLine);
while (m.find()) {
    System.out.println(m.group());
}
0
1435
3029
1975年
92
72
304
于 2013-08-15T18:48:45.390 回答
1

其实也少else了一句话。next()做完了就不用nextInt()做。

于 2013-08-15T18:53:26.363 回答
0

我相信next()一直到它看到一个空间。我会使用replace("\"",""),冲洗并用其他字符重复,直到你有一个可以打印的整数字符串。

于 2013-08-15T18:49:49.950 回答