Анализ чисел - PullRequest
       12

Анализ чисел

0 голосов
/ 28 мая 2018

Я пытаюсь сделать программу, которая анализирует набор чисел, может быть очень полезной.Создайте приложение для анализа, которое запрашивает у пользователя числа в диапазоне от 1 до 50, оканчивающиеся дозором, а затем выполняет следующий анализ чисел:

• Определение среднего числа

•Определить максимальное число

• Определить диапазон (максимум - минимум)

• Определить медиану (число, которое встречается чаще всего)

• Отображение гистограммы с именемгистограмма, которая показывает числа в каждом диапазоне из пяти единиц (1–5, 6–10, 11–15 и т. д.)

На данный момент я пытаюсь подсчитать числа, но я неКажется, я знаю как.Может ли кто-нибудь помочь мне с этой программой и установить в правильном направлении.Вот мой код, и пока он насчитывает только 0.

public class Analasys {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int[] number = new int[50];

        int outcome = 1;
        int x = 0;
        while (outcome != 0) {
            System.out.println("Enter a number or enter 0 to quit.");
            outcome = scan.nextInt();
            number[x] = outcome + 1;
        }

        for (int i = 0; i < 50; i++) {
            System.out.println(i + ": " + number[i]);
        }
    }
}

1 Ответ

0 голосов
/ 28 мая 2018

Вы можете определить каждую отдельную операцию как Function и использовать заданный int[] arr входной параметр:

public static void main(String[] args) throws ParseException {
    int[] number = new int[50];

    System.out.println("Average: " + MEAN.apply(number));
    System.out.println("Maximum: " + MAX.apply(number));
    System.out.println("Range: " + RANGE.apply(number));
    System.out.println("Median: " + MEDIAN.apply(number));
    Map<Integer, List<Integer>> histogram = HISTOGRAM.apply(number, 5);
}

public static final Function<int[], Double> MEAN = arr -> Arrays.stream(arr).sum() / (double)arr.length;

public static final Function<int[], Integer> MAX = arr -> {
    OptionalInt max = Arrays.stream(arr).max();
    return max.isPresent() ? max.getAsInt() : 0;
};

public static final Function<int[], Integer> MIN = arr -> {
    OptionalInt min = Arrays.stream(arr).min();
    return min.isPresent() ? min.getAsInt() : 0;
};

public static final Function<int[], Integer> RANGE = arr -> MAX.apply(arr) - MIN.apply(arr);

public static final Function<int[], Double> MEDIAN = arr -> {
    arr = Arrays.copyOf(arr, arr.length);
    Arrays.sort(arr);

    int m = arr.length / 2;
    return arr.length % 2 == 0 ? (arr[m - 1] + arr[m]) / 2. : (double)arr[m];
};

public static final BiFunction<int[], Integer, Map<Integer, List<Integer>>> HISTOGRAM = (arr, step) -> {
    Map<Integer, List<Integer>> map = new TreeMap<>();

    for (int val : arr) {
        int key = ((val - 1) / step) + 1;

        if (!map.containsKey(key))
            map.put(key, new ArrayList<>());

        map.get(key).add(val);
    }

    return map;
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...