1

私は現在、入力ファイルを取り、それをいくつかの並列配列に読み込むプロジェクトを Java でコーディングしています。いくつかの制限があります。配列リストを使用することはできません。ファイルは Scanner を使用して読み取る必要があります。配列に読み取った後、コーディングする必要がある他のいくつかの手順がありますが、ハングアップしました。

    public static void main(String[] args) throws FileNotFoundException {

    final int ARRAY_SIZE = 10;
    int choice;
    int i, variableNumber;
    String[] customerName = new String[ARRAY_SIZE];
    int[] customerID = new int[ARRAY_SIZE];
    String[] os = new String[ARRAY_SIZE];
    String[] typeOfProblem = new String[ARRAY_SIZE];
    int[] turnAroundTime = new int[ARRAY_SIZE];

    readFile(customerName, customerID, os, typeOfProblem, turnAroundTime);

}

public static void readFile(String[] customerName, int[] customerID, String[] os, String[] typeOfProblem, int[] turnAroundTime) throws FileNotFoundException
{
    File hotlist = new File("hotlist.txt");
    int i = 0;

    if (!hotlist.exists())
    {
        System.out.println("The input file was not found.");
        System.exit(0);
    }
    Scanner inputFile = new Scanner(hotlist);
    while (inputFile.hasNext())
    {
        customerName[i] = inputFile.nextLine();
        System.out.println(customerName[i]);
        customerID[i] = inputFile.nextInt();
        os[i] = inputFile.nextLine();
        typeOfProblem[i] = inputFile.nextLine();
        turnAroundTime[i] = inputFile.nextInt();
        i++;
    }
    System.out.println("This is only a test." + customerName[1] + "\n" + customerID[1] + "\n"
                        + os[1] + "\n" + typeOfProblem[1] + "\n" + turnAroundTime[1]);
}

上記のコードを実行しようとすると、次のエラーで失敗します。

run:
Mike Rowe
Exception in thread "main" java.util.InputMismatchException
    at java.util.Scanner.throwFor(Scanner.java:864)
    at java.util.Scanner.next(Scanner.java:1485)
    at java.util.Scanner.nextInt(Scanner.java:2117)
    at java.util.Scanner.nextInt(Scanner.java:2076)
    at mckelvey_project3.McKelvey_Project3.readFile(McKelvey_Project3.java:70)
    at mckelvey_project3.McKelvey_Project3.main(McKelvey_Project3.java:33)
Java Result: 1
BUILD SUCCESSFUL (total time: 0 seconds)

hotlist.txt ファイルの内容は次のとおりです。

Mike Rowe
1
Windows DOS
Too Much ASCII Porn
3
Some Guy
2
Windows 10
Too Much Windows
200

どんな助けでも大歓迎です!ところで、System.out ステートメントはすべて、コードをデバッグしようとしていたテスト ステートメントです。エラーを具体的に分離しました

customerID[i] = inputFile.nextInt();

同様に

turnAroundTime[i] = inputFile.nextInt();

しかし、これらのステートメントが機能しない理由を理解できません。

4

2 に答える 2

0

あなたの主な問題は、適切な区切り文字を設定していないことです。Scanner を初期化した後inputFile.useDelimiter("\n")、区切り文字を改行に設定します。デフォルトは空白です。

inputFile.next()その後、文字列を使用して int をinputFile.nextInt()問題なく読み取ることができます。

于 2014-11-23T22:20:57.337 に答える