[英]Reading in from Text File, Mismatch Exception (When reading in Float)
我在從外部數據文件 (.txt) 讀取浮點數時遇到問題 我已經閱讀了許多關於此錯誤和常見問題的不同帖子,但我仍然不知道我做錯了什么。 建議各不相同,有人說使用“.nextLine()”,有人說使用“.next()”,我已經嘗試了很多這些組合,但仍然遇到問題。
這是相關部分:
public void read_file(Interface iface) throws FileNotFoundException {
int readCount = 0;
File file = new File(""); \\FILE PATH REDACTED
Scanner reader = new Scanner(file);
reader.useDelimiter(",|\\n");
while(reader.hasNext()){
String type = reader.next();
float rate = reader.nextFloat();
String desc = reader.next();
//Some irrelevant code follows
文本文件:
Test1
10.00
Test2
我得到以下異常:
Exception in thread "main" java.util.InputMismatchException
at java.base/java.util.Scanner.throwFor(Scanner.java:939)
at java.base/java.util.Scanner.next(Scanner.java:1594)
at java.base/java.util.Scanner.nextFloat(Scanner.java:2496)
at ReadFile.read_file(ReadFile.java:20)
at Main.main(Main.java:21)
我進行了一個測試,它肯定在第一行中讀取(我能夠打印出來)。 所以我猜測它與Test1之后行尾的行返回有關。 但我認為這可以通過使用分隔符來處理。
我正在使用 IntelliJ(有些人建議使用 a,(comma) 而不是 a.(period) 有時可以解決錯誤 - 但這似乎僅限於 NetBeans 或 Eclipse,我忘了)。
有沒有人有什么建議?
顯然,您必須在useDelimiter
之前或之后添加此行:
reader.useLocale(Locale.US);
掃描儀需要能夠檢測浮動。
無論出於何種原因,一旦它開始工作,我嘗試移除該線路並繼續工作。 我恢復到您的原始腳本,它仍在工作。 我認為區域設置是持久的或其他東西。
無論如何,如果添加此行有效,我建議保留它:)
我認為您在“reader.useDelimiter()”中設置的換行符應該與文件中的換行符一致。 一般Windows是'\r\n',Unix是'\n',Mac是'\r',希望對你有幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.