сохранить значения из файла в массив

avatar
CSJerry
8 апреля 2018 в 00:16
44
3
1

Я хочу сохранить значения из документа .txt в массив. Я уже пробовал эти решения, и ни одно из них не сработало. Я хочу сохранить значения в массиве, потому что я буду использовать этот массив в будущих методах для получения среднего значения, суммы и т. д.

Вот что я придумал:

import java.util.Scanner;
import java.io.*;
public class example{
public static void main(String[] args)throws IOException{

Scanner input = new Scanner(new File("integers.txt"));

int counter = 0;
while(input.hasNext()){

  int numbers = input.nextInt();
  counter++;
}
int[] array = new int[counter];
for(int i =0; i < array.length; i++){
  System.out.println(array[i]);
    }
  }
}

Мой вывод: 0 0 0 0 0 0 0 0 0 0 0 0 0

И это должны быть цифры в файле:

1 2 3 4 5 6 7 8 9 10 11 12 13

Любая помощь будет высоко оценена. Заранее спасибо.

Источник
Jim Garrison
8 апреля 2018 в 00:21
0

Вы прошлись по коду в отладчике IDE, чтобы определить, где он работает не так, как вы ожидаете? Подсказка: вы прочитали числа, но не сохранили их, пока читали.

Ответы (3)

avatar
Eduardo Folly
8 апреля 2018 в 00:40
0

Проще всего сохранить его в виде списка.

public static void main(String[] args) throws FileNotFoundException {
    Scanner input = new Scanner(new File("integers.txt"));

    List<Integer> numbers = new ArrayList();

    while (input.hasNextInt()) {
        numbers.add(input.nextInt());
    }

    numbers.forEach(System.out::println);
}

Метод суммирования может быть таким:

private static int sum(List<Integer> numbers) {
    int total = 0;
    for (int number : numbers) {
        total += number;
    }
    return total;
}

Ура, приятель.

avatar
Akshay Jain
8 апреля 2018 в 03:20
0

Использование Java Stream и последующее преобразование в массив — это всего лишь 2 строки кода. 1 строка для печати результатов.

    public static void main(String[] args)  {
         Stream<String> streamString = Files.lines(Paths.get("integers.txt"));
         int[] intArray = streamString.mapToInt(Integer::parseInt).toArray();
         Arrays.stream(intArray).forEach(System.out::println);
}
avatar
Raymo111
8 апреля 2018 в 00:22
0

Перед распечаткой массива вам необходимо прочитать файл в массив:

public static void main(String[] args) throws FileNotFoundException {
    Scanner input = new Scanner(new File("integers.txt"));

    int counter = 0;
    while (input.hasNext()) {
        counter++;
    }
    int[] array = new int[counter];
    for (int i = 0; i < array.length; i++) {
        array[i] = input.nextInt();
        System.out.println(array[i]);
    }
}