Java 从扫描仪读取输入不匹配异常

Java 从扫描仪读取输入不匹配异常,java,Java,这段代码应该将所有的值存储到一个名为scores的double数组中,稍后我将使用这个数组。我有个例外 import java.io.*; import java.util.*; public class readFile { public static void main(String[] args) throws IOException{ double [] scores = new double[40]; Scanner input = new Scanner(new File("sc

这段代码应该将所有的值存储到一个名为scores的double数组中,稍后我将使用这个数组。我有个例外

import java.io.*;
import java.util.*;
public class readFile {


public static void main(String[] args)
throws IOException{
double [] scores = new double[40];
Scanner input = new Scanner(new File("scores.dat"));
while(input.hasNext()){
    int i = 0;
    scores[i] = input.nextDouble();
    System.out.println(scores[i]);
    i++;
    }
  }
}
这就是输入。举个例子

70 79 72 74 81 83 84 89.2 88.3 75.0 77 91.2 92.9 81.1 67.9 77 80 101 10% ! @# 77.5 89 99 -51 88.5 75.1 79 86 80 82.1 83.3 95.7 98.9 80.1 79.9 70.2 88 100 105 78.5 68.2 63.1 58.9 69.3 74.1 75.5 78.8 79.1 82.2 84.3#86.63 512345 9999999999 3#&&苹果99.5 93.1 95.5@V 78.1.21 88 8

它在第一个符号处停止,但我只想跳过它,转到下一个符号。我错过了什么

线程“main”中的异常java.util.InputMismatchException


让我们看看
输入不匹配异常
的含义

public class InputMismatchException extends NoSuchElementException
public double nextDouble()
由扫描程序引发,以指示检索到的令牌不存在 匹配所需类型的模式,或者标记已过期 所需类型的范围

让我们看看
nextDouble()
是什么意思

public class InputMismatchException extends NoSuchElementException
public double nextDouble()
将输入的下一个标记扫描为双精度标记此方法将抛出 如果下一个标记无法转换为 有效的双精度值。如果翻译成功,扫描仪 超过匹配的输入

希望你能从这些提示中找到答案

在您的输入中,前几个数字是整数类型,您尝试通过
nextDouble()
读取。因此,你最终会遇到一个例外

你可以按照这个蓝图来解决你的问题

if (input.hasNextInt()) {
    System.out.println(input.nextInt());
}else if(input.hasNextDouble()) {
    System.out.println(input.nextDouble());
}else{
    //Neither int or double
    input.nextLine();
    continue; 
}

解释:如果输入将int类型读取为int或将double类型读取为double。此外,如果输入既不是int也不是double,请执行其他操作。在int或double部分中,您应该使用nextLine()或使用next()刷新当前标记来刷新或消耗整行,以便能够读取下一个标记,该标记可能是整型或double类型,并在之后继续

阅读
nextDouble
的文档,它解释了它抛出异常的原因,但没有告诉我如何跳过它。在其他{}情况下,我需要放置跳过符号元素的代码,对吗?我不知道什么代码可以做到这一点。试着把它作为两部分都读,所以当输入不是int或double时,什么也不做,或者continue@TerikBrunson它有帮助吗?我尝试了“继续”;但它仍然抛出了相同的异常:(谢谢你的提议!我刚刚找到了它。完成它的代码是input.next()我不知道有这个。谢谢你的帮助