簡體   English   中英

從文本文件讀入,不匹配異常(以浮點數讀入時)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM