我已经搜索了有关该主题的各种主题,但无法找到处于相同情况或目前可以使用的任何解决方案。线程“main”中的Java异常java.util.NoSuchElementException - 使用扫描器读取文件
我只是想读取格式的TXT文件: Double0 Double0中断0 Double1 Double1 INT1 .. Doublen Doublen内置内置
这里是我的代码:
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
为了帮助他人回答,你还需要分享你的文件。 –
很可能是输入文件结构的问题。检查不正确的换行字符或共享文件内容 – Bobz79
另一个额外的信息: 我有以下文件: 0,6580097206539348 \t 0,36101701387184226 0,9529350156283241 \t 0,7383387609711926 0,6580097206539348 \t 0, 36101701387184226 0,9529350156283241 \t \t 0,7383387609711926 2 0,6580097206539348 \t \t 0,36101701387184226 2 0,48639272096486486 \t \t 0,4378985495387871 1 和我的代码工作, 当我在EOF 0,8632344357711337 \t 0,5253407956535258 它引发错误添加下面的新行。 –