我已經搜索了有關該主題的各種主題,但無法找到處於相同情況或目前可以使用的任何解決方案。線程「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 它引發錯誤添加下面的新行。 –