使用Java从文本文件中读取/求和数字

时间:2014-01-15 02:30:04

标签: java sum

我觉得我犯了一个非常简单的错误,但我无法弄清楚它是什么。我知道程序正在读取正确的文件,但每次运行程序时它只返回0.0000作为总和。我做错了什么?

2 个答案:

答案 0 :(得分:1)

构造将从文件中读取的Scanner对象时,必须创建一个File对象并将其传递给Scanner类构造函数,它具有以下定义:

public Scanner(File source)
        throws FileNotFoundException

您实际上并没有在文件上创建Scanner对象,而是创建一个Scanner对象,该对象将文件名作为输入读取,当然不能将其解释为double。

更改此行:

Scanner input = new Scanner(filename);

对此:

Scanner input = new Scanner( new File(filename) );

答案 1 :(得分:1)

您正在使用错误的Scanner构造函数,即您正在从字符串filename读取。我测试了这个,

// Why void? Just return the sum
public double readFile(String filename) {     
  Scanner input = null;
  double sum = 0;
  try {
    input = new Scanner(new File(filename));
    while (input.hasNextDouble()) {
      sum += input.nextDouble();
    }
    // output results
    System.out.printf("The total sum of the "
        + "doubles in the input file is %f\n", sum);
  } catch (FileNotFoundException e) {
    e.printStackTrace();
  } finally {
    input.close();
  }

我得到了输出

The total sum of the doubles in the input file is -3.651000