我有一个字符串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();
        }

最佳答案

一旦Scanner遇到不是整数的内容,hasNextInt()就会返回false。更不用说您通过scanLine.next()循环底部的while调用跳过了一些有效的整数的事实。您可以改用Matcher

Matcher m = Pattern.compile("\\d+").matcher(currLine);
while (m.find()) {
    System.out.println(m.group());
}


0
1435
3029
1975年
92
72
304

10-07 23:26