найти самое высокое и самое низкое число в массиве с JOptionPane - PullRequest
0 голосов
/ 19 сентября 2018

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

int m=Integer.parseInt(JOptionPane.showInputDialog("Enter index"));       
int values;
int num [] = new int [m];

int max = num[0];
int min = num[0];
for (int i=0;i<num.length;i++)      
     {                          
     num[i] = values =Integer.parseInt(JOptionPane.showInputDialog("Enter value"));   
     System.out.println(num[i]);

     if (num[i] > max)
     {
         max=num[i];
     }
     if (num[i] < min )
     {
         min=num[i];
     }

}                                    
System.out.println("Largest Number in a given array is : " + max);
System.out.println("Smallest Number in a given array is : " + min);

Ответы [ 4 ]

0 голосов
/ 19 сентября 2018

Вы можете использовать Integer.MAX_VALUE и Integer_MIN_VALUE.максимальное значение для целого числа равно 2147483647 (2 ^ 31-1), а минимальное значение для целого числа равно -2147483648 (-2 ^ 31)

int m=Integer.parseInt(JOptionPane.showInputDialog("Enter index"));       
int num [] = new int [m];
int max = Integer.MAX_VALUE;
int min = Integer.MIN_VALUE;

 for (int i=0;i<num.length;i++)      
 {                          
     num[i] = values =Integer.parseInt(JOptionPane.showInputDialog("Enter value"));   
     System.out.println(num[i]);
     if (num[i] > max)
     {
         max=num[i];
     }
     if (num[i] < min )
     {
         min=num[i];
     }
}  

Надеюсь, это работает для вас.

0 голосов
/ 19 сентября 2018

Вы можете использовать Arrays.sort(), чтобы отсортировать массив и просто получить доступ к первому (0-му) индексу, который будет содержать наименьшее число, и последнему индексу, который будет содержать наибольшее число:

int m=Integer.parseInt(JOptionPane.showInputDialog("Enter index"));       
 //int values; dont need this
 int num [] = new int [m]; //num is initialised with length entered by the user

 //int max = num[0]; no need
 //int min = num[0]; no need
 for (int i=0;i<num.length;i++)      
 {                          
  num[i] = Integer.parseInt(JOptionPane.showInputDialog("Enter value"));   
  System.out.println(num[i]);      

 }
Arrays.sort(num); //this will sort your array in ascending order: smallest number will be at the 0th index and largest will be at the last index                                    
System.out.println("Largest Number in a given array is : " + num[num.length-1]);
System.out.println("Smallest Number in a given array is : " + num[0]);
0 голосов
/ 19 сентября 2018

В вашем коде есть несколько ошибок - поэтому, используя вашу попытку, вы можете установить первое значение после , которое было получено от пользователя как min и max, и работать оттуда:

int m = Integer.parseInt(JOptionPane.showInputDialog("Enter index"));
int num[] = new int[m];
int max = Integer.parseInt(JOptionPane.showInputDialog("Enter value"));
System.out.println(max);
int min = max;
for (int i = 0; i < num.length - 1; i++) {
    num[i] = Integer.parseInt(JOptionPane.showInputDialog("Enter value"));
    System.out.println(num[i]);
    if (num[i] > max) {
        max = num[i];
    } else if (num[i] < min) {
        min = num[i];
    }
}
System.out.println("Largest Number in a given array is : " + max);
System.out.println("Smallest Number in a given array is : " + min);

При 5 входах по 3, 8, 6, 4 и -33 вывод:

Наибольшее число в данном массиве: 8

Наименьшее число в данном массиве: -33


Просто для удовольствия, вот альтернативное решение, которое весьма неэффективно:

System.out.println(Arrays.stream(num).boxed().mapToInt(Integer::intValue).max().getAsInt());
System.out.println(Arrays.stream(num).boxed().mapToInt(Integer::intValue).min().getAsInt());

Или, конечно, вы могли быотсортируйте массив с помощью Arrays.sort () , а затем найдите максимальное значение с помощью array[array.length() - 1] и минимальное с помощью array[0]

0 голосов
/ 19 сентября 2018

Добро пожаловать,

int[] num= new int[4];

После инициализации num, num будет {0, 0, 0, 0};

int max = num[0];
int min = num[0];

Так что теперь min будет 0, потому что num [0] равно 0 - независимо от того, что вы вводите.

num[i] = values =Integer.parseInt(JOptionPane.showInputDialog("Enter value"));   
System.out.println(num[i]);
if(i == 0)
      min = num[i];

Попробуйте и подумайте об этом (то же самое для максимального значения)

...