【发布时间】:2018-09-26 20:33:43
【问题描述】:
我正在尝试从 scores.csv 计算总数和平均数,但由于某些原因它无法计算。
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class TotalAndAverage {
public static void main(String[] args) {
try {
Scanner fin = new Scanner(new File("Scores.csv"));
double total = 0, count = 0;
while (fin.hasNextInt()) {
total += fin.nextInt();
count++;
}
System.out.println("Total score is " + total);
System.out.println("Average score is " + (total/count));
fin.close();
} catch (FileNotFoundException e) {
System.out.println("Scores.csv does not exists!");
}
}
}
当我运行它时显示,
Total score is 0.0 Average score is NaN
你知道为什么吗?我检查了我的文件,里面有数据。
【问题讨论】:
-
我检查了我的文件,里面有数据。 - 这些数据是什么样的?
-
因为你什么都没读,如果总和当前都是
0,那么它只是0/0,它是未定义的和NAN(不是数字) -
“Scores.csv”字符串在文件中?请注意,
fin.hasNextInt()如果发现无法理解为整数的内容(如“Scores.csv”),则返回 false。这会从一开始就破坏您的while循环。 -
除了@rslemos 所说的,扫描仪似乎没有找到
integers -
@Sami 鉴于您的问题可能与数据有关(代码看起来不错,虽然我个人从未使用过
java.util.Scanner),我只能建议您使用调试器来找出您的问题真的来自Scanner。
标签: java file csv io try-catch