Как найти сумму, количество чисел и наименьшее число из текстого файла?

185
17 апреля 2018, 05:36

У меня есть код, но не понимаю почему не работает. Находит без проблем наибольшее число и по этой логике хочу найти наименьшее, но программа находит не то. Также не могу понять, какая ошибка в нахождении суммы и количества чисел.

public static void main(String[] args) {
    try{
        Scanner file = new Scanner(new File("test.txt"));
        int lar= file.nextInt();
        int min = file.nextInt();
        int count=0;
        // поиск наибольшего числа
        while (file.hasNextInt()){
            int number=file.nextInt();
            if (number>lar) {
                lar=number;
            }
            System.out.print(number+" "); //отображение чисел
        }
        // поиск наименьшего числа
        while(file.hasNextInt()){
            int number =file.nextInt();
            if (number<min) {
                min=number;
            }
        }
        // количество чисел
        while(file.hasNext()){
        count++;
        }
        // сумма чисел
        int total=0;
        int sum=0;
        while(file.hasNextInt()){
       sum = file.nextInt();
        total= sum+total;}
        file.close();
        System.out.println();
        System.out.println("Наибольшее число: " + lar);
        System.out.println("Наименьшее число " + min);
        System.out.println("Количество чисел: "+ count);
        System.out.println("Сумма чисел: "+ total);

    }catch(IOException e){
        System.out.println(e.getMessage());}

Числа в текстовом файле следующие: 1231 123 21 321 2 32 3 23 2 232 -23 123123123
А компилятор выдает:

21 321 2 32 3 23 2 232 -23 123123123 
Наибольшее число: 123123123
Наименьшее число 123
Количество чисел: 0
Сумма чисел: 0
Answer 1

Нужно включить логику и понять, что делает nextInt. А оно просто читает следующее число из файла. Когда же файл дочитан до конца, больше читать нечего, и все while, кроме первого, не срабатывают. Более того, максимум тоже ищется некорректно - пропускается второе число.

В общем, все действия нужно делать за один проход - прочитали число, обновили максимум, минимум, счетчик, и сумму.

      int lar =  - MaxInt;
      int min = MaxInt;
      int count = 0;
      int sum = 0;
    while (file.hasnextInt()) {
        number =  file.nextInt();
        count++; 
        sum += number;
        if (number > lar) 
            lar=number;
        if (number < min) 
            min = number;
     }
READ ALSO
Проверка данных из Firebase

Проверка данных из Firebase

Пытаюсь проверить заголовок передаваемый из FirebaseВыдает ошибку, видимо данные еще не успевают подгрузиться

202
Как спрятать картинку в android?

Как спрятать картинку в android?

Дело такое: при запуске time-managera пустой список в началеНужно туда вставить картинку, которая бы пропадала как только мы что-то добавили

203
Запуск сайта на Spring MVC и tcp-сервера

Запуск сайта на Spring MVC и tcp-сервера

Пытаюсь запустить сервер для сайта на Spring MVC + простой tcp-сервер для общения с удаленными устройствамиНикак не могу запустить tcp-сервер при...

177