2015-12-04 2 views
-1

Мне нужно распечатать значения из списка массивов, который я читаю из текстового файла. Это не работает, пожалуйста, помогите мне понять, почему и предложить возможное решение.Печать списка массивов

Scanner in = new Scanner(new File("gravityVals.txt")); 
ArrayList <Double> gravity = new ArrayList<Double>(); 
while(in.hasNextDouble()) 
{ 
    gravity.add(in.nextDouble()); 
} 
in.close(); 
for (double i = 0; i < gravity.size(); i++) 
{ 
    System.out.println(gravity[i]); 
} 
+2

Поскольку в списке нет массива, вам необходимо использовать gravity.get (i) ... и, пожалуйста, сделайте i int int double ... –

ответ

0

в вашем цикл изменить двойной к междунар и использовать метод ArrayList прибудет(), то есть:

for (int i = 0; i < gravity.size(); i++){ 

    // Specify Index value to help with your logging 
    System.out.println("Value at index " + i + " is " + gravity.get(i)); 

} 
0

Это расширение на комментарии @Petter Friberg в. Вам нужно сделать свой счетчик циклов (i) int, а не двойной. Кроме того, поскольку гравитация - это ArrayList, а не массив, вам нужно использовать метод get для доступа к каждому элементу в ArrayList.

for (int i = 0; i < gravity.size(); i++) 
{ 
    System.out.println(gravity.get(i)); 
} 
0

Существует ряд проблем с кодом, который может привести к его не компиляции.

  1. Вы не можете получить доступ к элементам силы тяжести с помощью оператора []. Вам нужно сделать gravity.get (i).
  2. Мне нужно быть не двойным.

В противном случае код, который у вас есть, будет скомпилирован. Будет ли он работать так, как вы ожидаете, зависит от формата gravityVals.txt. Если вы не укажете разделитель для сканера, он использует значение по умолчанию, которое является простым пробелом.

Также приведены некоторые общие рекомендации по стилю, предполагающие, что вы используете Java 7+.

  1. Вам не нужно указать общий тип «Double», когда вы объявляете «новый ArrayList()» Компилятор определить тип.
    ArrayList<Double> gravity = new ArrayList<>() будет работать только отлично.

  2. Вы должны использовать Try-with-resources со Сканером.
    https://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html

  3. Использовать каждый синтаксис java для каждого цикла for. http://www.mkyong.com/java8/java-8-foreach-examples/

Следующая намного лучше.

List<Double> gravity = new ArrayList<>(); 
try(Scanner in = new Scanner(new File("gravityVals.txt"));) { 
    while(in.hasNextDouble()) { 
    gravity.add(in.nextDouble()); 
    } 
} 

for (Double val : gravity){ 
    System.out.println(val); 
} 
Смежные вопросы