我有一个字符串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();
}
答案 0 :(得分:4)
只要Scanner
遇到非int的内容,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
答案 1 :(得分:1)
实际上,else
字也丢失了。如果next()
完成,则无需执行nextInt()
。
答案 2 :(得分:0)
我相信 next()一直到它看到一个空格。我会使用替换(“\”“,”“),用其他字符冲洗并重复,直到你有一串可以打印的整数。