Member 14016813 Ответов: 2

Java - массив не считывает данные из текстового файла


У меня есть текстовый файл с 10 целыми числами, 1 2 3 4 5 6 7 8 9 10. Они печатаются по порядку, однако я пытаюсь найти наименьшее, наибольшее и среднее из целых чисел в текстовом файле.

Что я уже пробовал:

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class Exercise2txt {

	public static void main(String[] args) throws Exception {

		int[] numbers = new int[10];

		int largest = Integer.MIN_VALUE;
		int smallest = Integer.MAX_VALUE;
		double total = 0;
		double avg;
		int i = 0;

		
			Scanner inFile = new Scanner(new File("numbers.txt"));

			for (int y = 0; y < 10; y++) 
				System.out.println(inFile.nextInt());
			
			if (numbers[i] > largest) {
				largest = numbers[i];
			}

			if (numbers[i] < smallest) {
				smallest = numbers[i];
			}

			for (int x = 1; x < numbers.length; x++) {
				total += numbers[x];
			}

			avg = total / numbers.length;
		

		System.out.println("Largest number = " + largest);
		System.out.println("Smallest number = " + smallest);
		System.out.println("The average of all numbers = " + avg);

	}
}


Это код, который у меня есть на данный момент

2 Ответов

Рейтинг:
2

CPallini

Ваш код почти завершен, вам просто нужно правильно прочитать файл. Попробуй

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class Exercise2txt {

  public static void main(String[] args) throws Exception {

    int[] numbers = new int[10];

    int largest = Integer.MIN_VALUE;
    int smallest = Integer.MAX_VALUE;
    int count = 0;
    double sum = 0.0;
    double avg;
    Scanner inFile = new Scanner(new File("numbers.txt"));
    while ( inFile.hasNext())
    {
      int n = inFile.nextInt();
      if ( largest < n)
        largest = n; 
      if (smallest > n)
        smallest = n;
      sum += n;
      ++count;
    }
    avg = sum / count;

    System.out.println("Largest number = " + largest);
    System.out.println("Smallest number = " + smallest); 
    System.out.println("The average of all numbers = " + avg);
  }
}


Рейтинг:
17

Patrice T

Цитата:
Они распечатываются по порядку

Это именно то, что вы делаете в своем коде.
System.out.println(inFile.nextInt());


Эта строка читается из файла и печатается, но где магия, которая сохраняет целое число для будущего использования ?

Ваш код ведет себя не так, как вы ожидаете, или вы не понимаете, почему !

Существует почти универсальное решение: запускайте свой код на отладчике шаг за шагом, проверяйте переменные.
Отладчик здесь, чтобы показать вам, что делает ваш код, и ваша задача-сравнить с тем, что он должен делать.
В отладчике нет никакой магии, он не знает, что должен делать ваш код, он не находит ошибок, он просто помогает вам, показывая, что происходит. Когда код не делает того, что ожидается, вы близки к ошибке.
Чтобы увидеть, что делает ваш код: просто установите точку останова и посмотрите, как работает ваш код, отладчик позволит вам выполнять строки 1 на 1 и проверять переменные по мере их выполнения.
Отладчик - Википедия, свободная энциклопедия[^]
http://docs.oracle.com/javase/7/docs/technotes/tools/windows/jdb.html[^]
https://www.jetbrains.com/idea/help/debugging-your-first-java-application.html[^]
Отладчик здесь только для того, чтобы показать вам, что делает ваш код, и ваша задача-сравнить его с тем, что он должен делать.