2

我有一个文本文件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
4

2 回答 2

3

尝试使用useDelimiter("[,\\s]+"). 目前您正在用\p{javaWhitespace}+only替换标准分隔符,,这意味着在找到第一个整数扫描仪后将

1,| 2, 3, 4, 5, \n
  ^here

所以下一个字符将是[space][digit]。由于空格不再是分隔符并且绝对不是数字,因此无法在hasNextInt()测试中接受此数据。

于 2013-11-11T01:32:23.367 回答
2

试试.useDelimiter("[,\\s]+");。如果只使用 delimiter(","),则下一个字符是空格,不能hasNextInt()在空格上使用。

于 2013-11-11T01:32:09.103 回答