我不断收到bufferedreader中的错误消息以及最后的catch异常。我已经在这三天了。如果有人可以请你告诉我我做错了什么,并告诉我如何修复我的代码,这将是非常令人遗憾的。
package week07;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JFileChooser;
public class Week07 {
public static void main(String args[]) throws IOException
{
{
JFileChooser chooser = new JFileChooser();
int result = chooser.showOpenDialog(null);
//check result
File file = chooser.getSelectedFile();
}
// Use DataInputStream to read binary NOT text.
BufferedReader br = new BufferedReader(new FileReader(file));
String strLine;
List<Double> numbers= new ArrayList<Double>();
//Read File Line By Line
while ((strLine = br.readLine()) != null) {
// Add number from file to list
numbers.add( parseDecimal(strLine));
}
//Close the input stream
((BufferedReader) numbers).close();
System.out.println(numbers);
}catch (Exception e){
e.printStackTrace();
}
private static Double parseDecimal(String strLine) {
// TODO Auto-generated method stub
return null;
}
}
答案 0 :(得分:1)
((BufferedReader) numbers).close();
如何将List
类型转换为BufferedReader
,然后在其上调用close()。显然你会得到例外。将其更改为br.close()
,最好在finally
块中进行,并使用空检查。
答案 1 :(得分:0)
使用Java-8,您可以通过减少大量样板代码来实现目标。请看下面的步骤。
将文件读入BufferedReader
BufferedReader reader= new BufferedReader(new FileReader(file));
将文件行转换为String
流
Stream<String> lineStream=reader.lines();
阅读List<Double>
。
List<Double> numbers =lineStream.map(p-> Double.valueOf(p))
.collect(Collectors.toList());
从List<Double>
计算平均值。
double average = numbers.stream().mapToDouble(p->p).average().getAsDouble();
显示输出。
System.out.println(average);