0

テキスト ファイルを読み込んで、オブジェクトの配列を作成しようとしています。次のエラーが発生し続けます...

Exception in thread "main" java.util.NoSuchElementException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at Prog6.main(Prog6.java:33)

フィールドを読み取っていないので、修正するために考えられるすべてのことを試しました。これがコードです。アドバイスをいただければ幸いです。ありがとう!

import java.io.*;
import java.util.*;

public class Prog6
{
public static void main(String[] args)
{
    String fname;
    String lname;
    String team; 
    String position;
    int completions;
    int attempts;
    int yards; 
    int receptions;

    Scanner inFile = null;
    Report rep = new Report();

    /*
     * Open File
     */
    try
    {
        inFile = new Scanner( new File( "nfl.txt" ) );
    }
    catch ( FileNotFoundException e )
    {
        System.err.println( "Error: file not found" );
    }
    /*
     * Read file
     */

    while (inFile.hasNext())
    {
        fname = inFile.next();
        lname = inFile.next();
        team = inFile.next();
        position = inFile.next();
        if (position == "QB")
        {
            completions = inFile.nextInt();
            attempts = inFile.nextInt();
            yards = inFile.nextInt();
            Player qb = new Player ();

            rep.addQuarterback(qb);
        }
        else if (position == "WR")
        {
            receptions = inFile.nextInt();
            yards = inFile.nextInt();
            Player wr = new Player ();

            rep.addReceiver(wr);
        }

        // Print report

        rep.printReport();      
    }


}
}
4

2 に答える 2

1

何らかの理由で、あなたが思っているほど多くのアイテムを持たない行が読み込まれています。スキャナーには一連の hasNext メソッド (long 値の hasNextLong() など) があり、スキャンする次の項目があるかどうか、および項目が正しい形式であるかどうかを示します。次のアイテムを取得する前にこれらのメソッドを使用すると、エラーを回避できます。

于 2013-04-10T02:47:22.947 に答える
0

おそらく、「try」ループ内で inFile を読み取ろうとしている「While」ループが必要です。

私が間違っていなければ、ファイルはこの後閉じられるため、実際にスキャナーを呼び出すことはできません。

だから、あなたは行き​​ます:

try {
     inFile = new Scanner(new File("nfl.txt"));        
     while(inFile.hasNext()) {    
         .....      
         ..... 
} catch
于 2013-04-10T02:45:50.003 に答える