为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

达令说 2022-10-26 16:02:50
我使用扫描仪的文件阅读器出现了一些问题,此时我有点不知所措。尝试使用扫描仪读取文件,但 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 会提示线程中的异常。
查看完整描述

1 回答

?
三国纷争

TA贡献1804条经验 获得超7个赞

尝试注释掉为 Scanner 实例指定分隔符的行 scanner.useDelimiter(" ");

并确保您的 Scanner 实例在解析双精度时使用正确的语言环境(.分隔符而不是,)。

Scanner scanner = new Scanner(new File(file).useLocale(Locale.US);


查看完整回答
反对 回复 2022-10-26
  • 1 回答
  • 0 关注
  • 72 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信