Мин макс в вопросе массива

Итак, у меня есть программа, которую я написал, которая находит максимальное и минимальное значение для набора из пяти чисел. Это работает по большей части, но когда я ввожу набор чисел, например {5,6,7,8,9}, то выводит 9 как максимум, но выводит 0 для минимума. Любые мысли или предложения. импорт java.util.Scanner;

public class MinMax {
  public static void main (String [] args) {
  @SuppressWarnings("resource")
  Scanner in = new Scanner (System.in);
  final int NUM_ELEMENTS = 5;
  double[] userVals = new double[NUM_ELEMENTS];
  int i = 0;
  double max = 0.0;
  double min = 0.0;

  System.out.println("Enter five numbers.");
  System.out.println();

  while (i < NUM_ELEMENTS) {
      System.out.println("Enter next number: ");
      userVals[i] = in.nextDouble();
      i++;
      System.out.println();
  }

  for (i = 0; i < userVals.length; i++) {
     if (userVals[i] > max) {
         max = userVals[i];
     }
         else if (userVals[i] < min) {
             min = userVals[i];
     }
  }
  System.out.println("Max number: " + max);
  System.out.println("Min number: " + min);
}

}

2 ответа

Решение

По умолчанию ваш min на число вне диапазона (например, Double.MAX_VALUE), а также max в Double.MIN_VALUE, Вы также можете упростить свой код, удалив второй цикл; Вы можете выполнить логику в одном цикле, и вы можете использовать Math.max(double, double) а также Math.min(double, double), Что-то вроде,

Scanner in = new Scanner(System.in);
final int NUM_ELEMENTS = 5;
double[] userVals = new double[NUM_ELEMENTS];
System.out.println("Enter five numbers.");
System.out.println();
double min = Double.POSITIVE_INFINITY;
double max = Double.NEGATIVE_INFINITY;
for (int i = 0; i < NUM_ELEMENTS; i++) {
    System.out.println("Enter next number: ");
    userVals[i] = in.nextDouble();
    min = Math.min(min, userVals[i]);
    max = Math.max(max, userVals[i]);
}
System.out.println("Max number: " + max);
System.out.println("Min number: " + min);

Приведите переменную min в ненулевое значение max. Означает максимальное значение, которое вы можете иметь при вводе с консоли.

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