簡體   English   中英

使用 JOptionPane [關閉] 查找數組中的最高和最低數字

[英]find the highest and lowest number in array with JOptionPane [Closeed]

用於大學教育的代碼我需要用戶插入數組的值並找到最高和最低但最低的數字不起作用。 誰能給我解釋一下,抱歉問得太多

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

歡迎,

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

試試這個並考慮一下(最大值相同)

您可以使用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]);

您的代碼中存在一些錯誤 - 因此,使用您的嘗試,您可以從用戶那里收到第一個值后將其設置為最小值和最大值,然后從那里開始工作:

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

具有 3、8、6、4 和 -33 的 5 個輸入,輸出為:

給定數組中的最大數是: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]最小值

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

希望這對你有用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM