(Java) inputmismatchexception при сканировании файла

Я получаю java.util.inputmismatchexception при использовании nextDouble() для файла, содержащего только удваивается. Вот соответствующий раздел кода:

public static double[] getGravity() throws IOException
{
    Scanner file = new Scanner("SurfaceGravity.txt");
    double[] gravity = new double[8];
    for(int index = 0; index < gravity.length; index++)
        gravity[index] = file.nextDouble();  //Here is where I get the error
    file.close();
    return gravity;
}

А вот содержимое SurfaceGravity.txt

3.700465457603474
8.8661999605471
9.8
3.697967684866716
24.776754466506414
10.43814587026926
8.861473215210253
11.131680688084042
0.6128071987535232

У меня сложилось впечатление, что inputmismatchexception происходит, когда токен неправильного типа, но, насколько я могу судить, все токены в файле являются двойными, поэтому я немного запутался.

2 ответа

В приведенном вами примере вы не инициализировали файл, из которого хотите прочитать.

Есть также несколько проблем с реализацией: скажем, например, что количество элементов в файле должно было измениться, тогда вам придется изменить свою реализацию, так как на данный момент вы ограничены 8 значениями.

public static List<Double> getGravity() throws IOException{
    File file = new File("SurfaceGravity.txt");
    Scanner input = new Scanner(file);

    List<Double> list = new ArrayList<>();
    while(input.hasNextDouble()){
        list.add(input.nextDouble());
    }
    return list;
}

Примечание: можно использовать double[] если это абсолютно необходимо, но для этого вам нужно узнать количество строк в файле.

В String нет двойного значения SurfaceGravity.txt, Вы, вероятно, хотите new Scanner(new File("SurfaceGravity.txt"))

См. Javadoc для сканера (строка):

Создает новый сканер, который выдает значения, отсканированные из указанной строки.

И сканер (файл)

Создает новый сканер, который выдает значения, отсканированные из указанного файла.

Другие вопросы по тегам