簡體   English   中英

為什么會出現此掃描儀錯誤?

[英]Why am I getting this Scanner error?

我正在使用2個掃描儀來讀取文件。 一個人抓住第一和第二行(因為我還需要其他東西)

int a = fileScanner.nextInt();
fileScanner.nextLine();
int b = fileScanner.nextInt();
fileScanner.nextLine();

然后,我逐行抓取文件的其余部分,然后將一行發送到另一個類。

    while( fileScanner.hasNextLine() ){
        line = fileScanner.nextLine();
        NameRecord current = new NameRecord (line, startYear, decades);
        names.add(current);
    }

(忽略其余的代碼。)然后我選擇該行的第一個Word,然后剩下的就是我需要存儲在數組中的數字,因此我使用以下代碼:

Scanner lineSc = new Scanner(line);
    dataName = lineSc.next();
    for (int i = 0; i < decades; i++) {
        yearData[i] = Integer.parseInt(lineSc.next());
    }
    lineSc.close();

但是最后,我得到了這個錯誤:

Exception in thread "main" java.util.NoSuchElementException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at NameRecord.<init>(NameRecord.java:36)
at Names.<init>(Names.java:34)
at NameSurfer.simpleTest(NameSurfer.java:176)
at NameSurfer.main(NameSurfer.java:202)

我究竟做錯了什么?

因為在行

yearData[i] = Integer.parseInt(lineSc.next());

你實際上調用next()next()已經被稱為行dataName = lineSc.next(); 因此,在文件末尾,當實際沒有更多數據時,您嘗試讀取多一份數據。

decades變量”值大於您嘗試讀取,同時它必須是長度的線的實際長度大於lineSc.length()-1以下。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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