Массив будет устанавливать значения «0» только при записи из текстового файла. - PullRequest
0 голосов
/ 25 февраля 2020
    String path1, path2;
    int count = 0, i = 0;
    path1 = args[0];

    File file = new File(path1);
    FileReader reader = new FileReader(file);
    Scanner inputFile = new Scanner(reader);

    while(inputFile.hasNextInt()) {
        inputFile.nextLine();
        count++;
    }
    int[] array1 = new int[count];
    while(inputFile.hasNextInt()) {

        //inputFile.nextLine();
        array1[i] = inputFile.nextInt();
        i++;
    }

У меня никогда не было этой проблемы раньше, но когда я пытаюсь записать значения в массив из текстового файла, содержащего только значения int, по одному в строке, мой массив возвращает только все "0". вместо цифр в текстовом файле. Я не уверен, имеет ли это отношение ко мне, используя командную строку, но у него есть правильный аргумент (назначение файла), введенный в моей IDE.

Заранее спасибо!

1 Ответ

0 голосов
/ 25 февраля 2020

Обратите внимание, что условия выхода обоих циклов while одинаковы. Если первое заканчивается, то второе перепрыгнет, так как условие сразу ложно. Указатель сканера уже находится в конце файла (все числа были прочитаны первым l oop), поэтому читать нечего.

У вас есть 2 варианта, чтобы решить эту проблему.

  1. Использование ArrayList: используйте объект ArrayList<int> для сохранения чисел в первом l oop. Список увеличивается по мере ввода чисел, поэтому вам не нужно знать количество строк перед созданием этого объекта, в отличие от необходимости знать это для создания массива.
  2. Сканирование файла еще раз: Между Циклы закроют предыдущий файловый ридер и сканер и создадут новый. Этот новый сканер снова укажет на начало файла, а второй l oop будет работать гладко.
...