【发布时间】:2014-06-19 02:06:02
【问题描述】:
我已经搜索了有关该主题的各种主题,但找不到处于相同情况的任何人或到目前为止我可以使用的任何解决方案。
我只想读取格式为 txt 的文件: 双0 双0 Int0 双 1 双 1 整数 1 .. 双倍双倍国际
这是我的代码:
public void readDatabase(String s) throws FileNotFoundException{
try {
BufferedReader br = new BufferedReader(new FileReader(s));
String line = br.readLine();
Scanner trainFile = null;
while (line != null) {
line.trim();
trainFile = new Scanner(line);
double x = trainFile.nextDouble();
double y = trainFile.nextDouble();
int type = trainFile.nextInt();
this.database.add(new Point(x,y,type));
line = br.readLine();
}
trainFile.close();
br.close();
}
catch (IOException ioe) {
ioe.printStackTrace();
}
}
有趣的是,这个函数工作了一段时间,但是当我用更多数据填充 txt 文件时,它停止工作。我还检查了文件是否存在最终错误,但一切都很好。根据我的堆栈跟踪,该错误出现在第一个 NextDouble() 调用中。有人有想法吗?
更新:
这是正在运行的文件类型:
0,6580097206539348 0,36101701387184226 2
0,9529350156283241 0,7383387609711926 2
0,6580097206539348 0,36101701387184226 2
0,9529350156283241 0,7383387609711926 2
0,6580097206539348 0,36101701387184226 2
0,48639272096486486 0,4378985495387871 1
但如果我像这样添加一些额外的行,它就会停止工作:
0,6580097206539348 0,36101701387184226 2
0,9529350156283241 0,7383387609711926 2
0,6580097206539348 0,36101701387184226 2
0,9529350156283241 0,7383387609711926 2
0,6580097206539348 0,36101701387184226 2
0,48639272096486486 0,4378985495387871 1
0,8632344357711337 0,5253407956535258 1
0,7351912765040557 0,8295830810436339 1
0,6369155743204543 0,2757349130759706 1
0,46512947234632146 0,4388586141249502 1
0,8677892876429869 0,599451235810409 1
0,8827084731154641 0,55652107505414 1
【问题讨论】:
-
为了帮助别人回答,你也需要分享你的文件。
-
输入文件的结构很可能有问题。检查不正确的换行符或共享文件内容
-
另一个额外的信息:我有以下文件:0,6580097206539348 0,36101701387184226 2 0,9529350156283241 0,7383387609711926 2 0,6580097206539348 0,36101701387184226 2 0,9529350156283241 0,7383387609711926 2 0,6580097206539348 0 ,36101701387184226 2 0,48639272096486486 0,4378985495387871 1 并且我的代码有效,当我在 eof 0,8632344357711337 0,5253407956535258 1 添加以下新行时,它会引发错误。
-
0,6580097206539348的格式不正确,无法解析为双精度。用点替换逗号就可以了。 -
我的意思是我的代码对某些输入有效,而对另一些输入则不能。阅读我上面的评论和解释
标签: java