Найти мин, макс и среднее с другим типом символов

Мне удалось найти минимальное, максимальное и среднее в моем коде. Код как это:

import java.util.Scanner;

public class Tugas {

public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    int max = Integer.MIN_VALUE; 
    int min = Integer.MAX_VALUE; 

    int    count       = 0;     
    double countTotal = 0;

    //... Buat Perulangannya
    System.out.print("Enter values (separate by space) : ");

    while (input.hasNextDouble() ) { 
        //... Get the next value.
        double value = input.nextDouble();

        //... Compare this value to max and min. Replace if needed.
        if (value > max) {
            max = (int) value;
        }
        if (value < min) {
            min = (int) value;
        }

        //... Keep track of these values for average calculation.
        count++;                 // Count the number of data points.
        countTotal += value;   // Keep a running total.
    }

    //... Be sure user entered at least one data point.
    if (count > 0) {                                          //Note 2
        //... Display statistics
        double rata = countTotal / count;

        System.out.println("Min = "  + min);
        System.out.println("Max = "  + max);
        System.out.println("Average = "  + rata);
    } else {
        System.out.println("No Data...!");
    }
}

}

Ок, если я ввожу: введите значения: 1 2 3 4 5, вывод: min 1, max= 5, среднее = 3.0

проблема в том, что мой код не считается автоматически, когда я нажимаю "ввод".

И как, когда я введу: AB 8 9 7 CD будет зацикливаться, пока не получите правильный ввод

Итак: введите значения: a b 8 9 7 c d it print "Пожалуйста, введите тип цифры" Введите значения:6 2 4 6 7 2 3 5 3 мин: 2 макс: 7 в среднем: 4.2222

Спасибо

1 ответ

Вот небольшая модификация, которая принимает всю строку из сканера, а затем анализирует ее. Он проверяет строку при разборе, согласно вашим спецификациям, зацикливание, если ввод неверен.

Вы уверены, что хотите, чтобы min и max были приведены к типу int? Остальная часть приложения, кажется, имеет дело с двойными.

импорт java.util.Scanner;

public class Tugas {

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        int max = Integer.MIN_VALUE;
        int min = Integer.MAX_VALUE;

        int count = 0;
        double countTotal = 0;

        //... Buat Perulangannya
        boolean validinput = false;
        String valueSetLine = null;
        while (!validinput) {
            System.out.print("Enter values (separate by space) : ");
            valueSetLine = input.nextLine();
            if (valueSetLine.matches("^(-|-?\\d*\\.?\\d+(\\s-?\\d*\\.?\\d*)*)$"))  {
                System.out.println("valid string");
                validinput = true;
            } else {
                System.out.println("invalid input");
            }
        }
        String[] doubleStrs = valueSetLine.split("\\s");
        double[] values = new double[doubleStrs.length];
        int i = 0;
        for (String s : doubleStrs) {
            try {
                double d = Double.parseDouble(s);
                values[i] = d;
                i++;
            } catch (NumberFormatException nfe) {
                nfe.printStackTrace();
            }
        }

        for (double value : values) {
            //... Compare this value to max and min. Replace if needed.
            if (value > max) {
                max = (int) value;
            }
            if (value < min) {
                min = (int) value;
            }

            //... Keep track of these values for average calculation.
            count++;                 // Count the number of data points.
            countTotal += value;   // Keep a running total.
        }

        //... Be sure user entered at least one data point.
        if (count > 0) {                                          //Note 2
            //... Display statistics
            double rata = countTotal / count;

            System.out.println("Min = " + min);
            System.out.println("Max = " + max);
            System.out.println("Average = " + rata);
        } else {
            System.out.println("No Data...!");
        }

    }

}
Другие вопросы по тегам