我试图阅读包含3列数据集的ex2data2.txt。我想将它存储在我的x数组和y数组中。但它不起作用。它无法读取文本文件。文本文件的位置和我的代码一起在我的src文件夹中。
double[][] x = new double[180][1];
double[][] y = new double[180][0];
try{
BufferedReader br=new BufferedReader(new FileReader("ex2data2.txt"));
String words[]=new String[2];
String line=null;
int i = 0;
while((line=br.readLine())!=null){
words=line.split(",");
//double[i] y = Double.parseDouble(words);
x[i][0] = Double.parseDouble(words[0]);
x[i][1] = Double.parseDouble(words[1]);
y[i][0] = Double.parseDouble(words[2]);
i++;
}
br.close();
}
catch(Exception e){
System.err.println("Error: Target File Cannot Be Read");
}
答案 0 :(得分:2)
您应该将文件放在顶部的父项目文件夹中。不在src / 。
编辑:我已经运行了这个,以便证明...
访问文件,读取所有数据。
java.lang.NumberFormatException:对于输入字符串:“43 323 33”这个我放入了该文件
at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1241)
at java.lang.Double.parseDouble(Double.java:540)
at com.rem.so.Rem.main(Rem.java:18)
下次运行
java.lang.ArrayIndexOutOfBoundsException: 1
at com.rem.so.Rem.main(Rem.java:19)
更正后 ..
double[][] x = new double[180][2];
double[][] y = new double[180][1];
现在已经完成了。
请找到我放置文件的屏幕截图...
答案 1 :(得分:2)
catch(Exception e){
System.err.println("Error: Target File Cannot Be Read");
}
任何编写此代码的开发人员都应立即解雇。
从不抓住Exception
,但执行正确且具体的错误处理。捕获最精确的错误来处理(例如FileNotFoundException
),避免捕获您不知道如何处理的错误。如果有疑问,重新抛出错误,以便外部错误处理程序可以处理它。始终记录错误,除非预期发生。
然后您将收到更准确的错误消息。但您选择忽略实际错误e
。
真的非常真实地阅读了Java书籍或教程,特别是有关正确异常处理的部分。 你通过像你一样的方式丢弃错误,使你自己的生活变得困难。
异常几乎永远你应该忽略的东西。您出于某种原因需要处理它们! (事实上,还有“未经检查”的例外情况,你不需要这样做。这使得更明显的是,你需要来正确处理它们 。)
Three Rules for Effective Exception Handling (java.net)
您的错误很可能是ArrayOutOfBoundsException
(您不应该抓住它!)
double[][] x = new double[180][1];
double[][] y = new double[180][0];
太小。你可能需要
double[][] x = new double[180][2];
double[][] y = new double[180][1];
答案 2 :(得分:2)
double [] [] y = new double [180] [0];
这可能不是你想要的。第二个维度为零,因此您无法在该数组中放置任何内容。第二个维度必须至少为1.