如何为我的扫描仪文件阅读器修复 java.util.InputMismatchException?

我使用扫描仪的文件阅读器出现了一些问题,此时我有点不知所措。尝试使用扫描仪读取文件,但 atm 我不断收到一条java.util.InputMismatchException消息,提示我scanner.next将错误的文件放入错误的数组中?我不知道为什么会发生这种情况,如果有人可以在我的代码中指出我搞砸的地方,我将不胜感激。

注意:除非它是相关的,否则忽略无用的变量和过长的数组。我正准备把它变成一个类,但一些变量还没有使用。

public static void main(String[] args) throws IOException

{

    int playersTotal = 0;

    int entries = 0;

    int namesIndex = 0;

    int attackIndex = 0;

    int blockIndex = 0;

    String[] playersName = new String[60];

    double[] attackScores = new double[60];

    double[] blockScores = new double[60];

    String file = "roster1.txt";

    Scanner scanner = new Scanner(new File(file));

    scanner.useDelimiter(" ");


    while(scanner.hasNextLine())

    {

        playersName[namesIndex] = scanner.next();

        System.out.println(playersName[namesIndex]);

        namesIndex ++;

        playersName[namesIndex] = scanner.next();

        System.out.println(playersName[namesIndex]);

        namesIndex ++;

        entries ++;

        attackScores[attackIndex] = scanner.nextDouble();

        System.out.println(attackScores[attackIndex]);

        attackIndex ++;

        entries ++;

        //problem occurs here:

        blockScores[blockIndex] = scanner.nextDouble();

        System.out.println(blockScores[blockIndex]);

        blockIndex ++;

        entries ++;

        playersTotal ++;

    }

}

这应该从每行都包含字符串和双精度的列表中取出每个用空格分隔的条目,并将其保存到正确的数组中。然而,它只在第一行达到第一个双倍。尝试读取下一个 double 会提示线程中的异常。


达令说
浏览 73回答 1
1回答

三国纷争

尝试注释掉为 Scanner 实例指定分隔符的行 scanner.useDelimiter(" ");并确保您的 Scanner 实例在解析双精度时使用正确的语言环境(.分隔符而不是,)。Scanner scanner = new Scanner(new File(file).useLocale(Locale.US);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java