2014-01-28 2 views
0

Я хочу прочитать двойные значения, хранящиеся в текстовом файле, и сохранить эти значения в массиве. Входной файл имеет одно значение в каждой строке. Следующий мой код.Чтение Двойные значения

File file=new File("val.txt"); 
List<Double> value = new ArrayList<Double>(); 
    Scanner input = new Scanner(file); 
    while(input.hasNext()){ 
     value.add(scanner.nextDouble());} 

Но я получаю исключение Nosuchelement. Что не так в коде ?. Как читать двойные значения из файла и хранить его?

+2

Вы должны проверить 'input.hasNextDouble()', 'hasNext' означает, что есть что-то читать, но вы не знаете, если это двойной или нет – BackSlash

+0

@BackSlash: пытался hasNextDouble(), все еще получая ту же ошибку. – Keerthana

+0

Можете ли вы сказать мне, какая строка вызывает ошибку? Выкладываю StackTrace слишком – BackSlash

ответ

3

Кажется, что вы используете 2 сканера. Вы проверяете один, если он имеет значение, и вы пытаетесь добавить это значение с помощью другого сканера.

Использовать только input.

Так изменить его:

File file=new File("val.txt"); 
List<Double> value = new ArrayList<Double>(); 
Scanner input = new Scanner(file); 
while(input.hasNextDouble()){ 
    value.add(input.nextDouble()); 
} 

Обратите внимание, что Scanner использовать региональные настройки по умолчанию (если не указать один). Поэтому, если этот локаль разделяет десятичные числа на ,, вы ничего не добавите к своему List. Поэтому убедитесь, что вы используете тот, который разделяет десятичные числа точкой.

Scanner input = new Scanner(file).useLocale(Locale.UK); 
+0

Спасибо .. это сработало .. У меня есть еще одно сомнение .. я могу преобразовать список в массив, используя двойные имена [] = value.toArray (new double [значение.size()])? – Keerthana

+1

@Keerthana Нет, вы не можете, потому что 'toArray (T [])' требует наличия общего массива в качестве параметра. Поэтому он не может работать с примитивным. Однако вы можете использовать класс-оболочку 'Double':' Double names [] = value.toArray (новый Double [value.size()]); ' –

+0

спасибо! работал .. – Keerthana

Смежные вопросы