Нахождение наименьшего значения из массива в Java - PullRequest
0 голосов
/ 10 июля 2019

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

import java.util.Scanner;

public class minMaxSumAverage {
    public static void main(String args[]) {
        int n, sum = 0, max, min;
        double average = 0;

        Scanner s = new Scanner(System.in);
        System.out.println("Enter elements you want to input in array: ");
        n = s.nextInt();
        int a[] = new int[n];
        max = a[0];
        min = a[0];
        System.out.println("Enter all the elements:");
        for (int i = 0; i < n; i++) {
            a[i] = s.nextInt();
            sum += a[i];
            average = (double) sum/a.length;
            if (a[i] > max) {
                max = a[i];
            }
            if (a[i] < min) {
                min = a[i];
            }
        }
        System.out.println("Sum is: " + sum);
        System.out.println("Average is: " + average);
        System.out.println("Max is: " + max);
        System.out.println("Min is: " + min);
    }
}

Вывод:

Enter elements you want to input in array: 
5
Enter all the elements:
25
5
10
6
4
Sum is: 50
Average is: 10.0
Max is: 25
Min is: 0

Минимальное значение должно быть 4.

Ответы [ 3 ]

0 голосов
/ 10 июля 2019
 int a[] = new int[n];
 max = a[0];
 min = a[0];

Вы создали пустой массив a. И max, и min установлены на 0. Это отлично работает для max, но дает вам результат, который вы видите для min, потому что в созданном вами массиве нет ничего меньше нуля.

Чтобы это исправить, добавьте свою строку min = a[0]; в цикл for после того, как вы заполните массив значениями, например,

for (int i = 0; i < n; i++) {
            a[i] = s.nextInt();
            sum += a[i];
            average = (double) sum/a.length;
            min = a[0];
            //if-statements here

Тогда min = a[0] больше не будет нулем, а будет первым значением заполненного массива.

0 голосов
/ 10 июля 2019

В качестве альтернативы вы можете рассмотреть поток ...

    public static void main(String args[]) {
    Scanner s = new Scanner(System.in);
    System.out.println("Enter count elements you want to input in array: ");
    int n = s.nextInt();
    int a[] = new int[n];
    System.out.println("Enter all the elements:");
    for (int i = 0; i < n; i++) {
        a[i] = s.nextInt();
    }
    s.close();

    IntSummaryStatistics iss = Arrays.stream(a).summaryStatistics();

    System.out.println("Sum is: " + iss.getSum());
    System.out.println("Average is: " + iss.getSum()/iss.getCount());
    System.out.println("Max is: " + iss.getMax());
    System.out.println("Min is: " + iss.getMin());
}
0 голосов
/ 10 июля 2019

Поскольку min инициализируется с 0. И в вашем цикле вы просто спрашиваете, меньше ли ваше текущее число 0.

Попробуйте еще раз с назначением первого значения вашего массива как min.

Тогда это должно работать.

...