使用JOptionPane查找数组中的最高和最低编号

时间:2018-09-19 08:16:02

标签: java arrays if-statement joptionpane

用于大学教育的代码 我需要用户插入一个数组的值,并找出哪个数字是最高和最低的,但是最低的数字不起作用。 谁能向我解释一下,抱歉要求很多

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 :(得分:0)

欢迎

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];

尝试一下并考虑一下(与最大值相同)

答案 1 :(得分:0)

您可以使用Arrays.sort()对数组进行排序,只需访问第一个(0th)索引,该索引将保留最小的数字,而最后一个索引将保留最大的数字:

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]);

答案 2 :(得分:0)

您的代码中存在一些错误-因此,您可以尝试从用户处接收到的第一个值 设置为最小值和最大值,然后从那里开始: >

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]查找最小值

答案 3 :(得分:0)

您可以使用Integer.MAX_VALUEInteger_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];
     }
}  

希望这对您有用。