(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 для сканера (строка):
Создает новый сканер, который выдает значения, отсканированные из указанной строки.
Создает новый сканер, который выдает значения, отсканированные из указанного файла.