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