我有一个文本文件numbers.txt
,其中有一些数字行,用逗号分隔(\n
当然不可见):
1, 2, 3, 4, 5, \n
6, 7, 8, 9, 10, \n
11, 12, 13, 14, 15
我想阅读并加起来,以便整体结果为120 这是我的代码:
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class App1 {
int res;
public App1() {
Scanner sc = null;
try {
sc = new Scanner(new File("numbers.txt")).useDelimiter(",");
} catch (FileNotFoundException ex) {
System.err.println(ex);
}
while (sc.hasNextInt()) {
res += sc.nextInt();
}
System.out.println("Result: " + res);
}
public static void main(String[] args) {
App1 app = new App1();
}
}
不幸的是我只得到第一个数字:
Result: 1
答案 0 :(得分:3)
尝试使用useDelimiter("[,\\s]+")
。目前,您只使用\p{javaWhitespace}+
替换标准分隔符,
,这意味着在找到第一个整数扫描程序后将
1,| 2, 3, 4, 5, \n
^here
所以下一个字符将是[space][digit]
。由于空格不再是分隔符,并且绝对不是数字,因此hasNextInt()
测试无法接受此数据。
答案 1 :(得分:2)
试试.useDelimiter("[,\\s]+");
。如果您只使用分隔符(“,”),则下一个字符是空格,并且您不能在空格上使用hasNextInt()
。