如何解决使用 bufferedReader 获取文件每列的总和和平均值时,如何处理 csv 文件中的空白?
我需要在 java 中读取一个带有空格的 csv 文件,以获取每列的总和、平均值、最小值、最大值。
以下代码仅在 csv 文件没有空格时才有效。 处理带有空格的文件时,我应该在java中做什么? 有没有办法用0重新调整(填充)空白,这不会影响每列的其他值?
此csv文件中'876'前有一个空格as attached
因此出现如下错误:
java.lang.NumberFormatException: 对于输入字符串:""876"" 在 java.base/jdk.internal.math.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:2054) 在 java.base/jdk.internal.math.FloatingDecimal.parseDouble(FloatingDecimal.java:110) 在 java.base/java.lang.Double.parseDouble(Double.java:549) 首先.SchoolTeacher1.main(SchoolTeacher1.java:32)
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new FileReader("C:\\Users\\USER\\education.txt"));
String line;
ArrayList<String> SchoolData = new ArrayList<>();
try {
while ((line = reader.readLine()) != null) {
String[] InputSplited = line.split(",");
Collections.addAll(SchoolData,InputSplited);
}
//1
double SumOfSchoolTeacher = 0;
double min_SchoolTeacher = Double.MAX_VALUE;
double max_SchoolTeacher = 0;
for (int i = 1; i < SchoolData.size() / 34; i++) {
SumOfSchoolTeacher += Double.parseDouble(SchoolData.get((i * 34) + 3));
if(Double.parseDouble(SchoolData.get((i * 34) + 3)) > max_SchoolTeacher) {
max_SchoolTeacher = Double.parseDouble(SchoolData.get((i * 34) + 3));
}
if(Double.parseDouble(SchoolData.get((i * 34) + 3)) < min_SchoolTeacher){
min_SchoolTeacher = Double.parseDouble(SchoolData.get((i * 34) + 3));
}
}
System.out.println("sum: " + SumOfSchoolTeacher);
System.out.println("avg: " + SumOfSchoolTeacher / 190);
System.out.println("Max: " + max_SchoolTeacher);
System.out.println("Min: " + min_SchoolTeacher);
在此处输入图片说明
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。