簡體   English   中英

方法會干擾查找數組的“最小”和“最大”數

[英]methods interfere with finding the "Min" and "Max" numbers of array

這是一個感性的問題。
我想知道為什么這兩種獨立的方法會產生干擾。
我知道兩者都在讀取同一個數組( my_array
獨立地,方法的每個響應都是正確的。 但是當我同時打開它們(最小和最大方法)時,以下方法的響應是錯誤的。

這是我的代碼:

public class myPractice {
    public static int max(int[] my_array1) {
        int i = 0;
        int max = my_array1[i];
         for(i = 0; i < my_array1.length-1; i++) {
             if(my_array1[i] > my_array1[i+1]) {
                 my_array1[i+1] = my_array1[i];
                 max = my_array1[i];
             }else {
                 max = my_array1[i+1];
             }
         } 
         System.out.println("Max= " +max); 
         return max;
    }
    
    public static int min(int[] my_array2) {
        int j = 0;
         int min = my_array2[j];
         for(j = 0; j < my_array2.length-1; j++) {
             if(my_array2[j] < my_array2[j+1]) {
                 my_array2[j+1] = my_array2[j];
                 min = my_array2[j];
             }else {
                 min = my_array2[j+1];
             }
         } 
         System.out.println("Min= " +min);
         return min;
    }
     public static void main(String args[]) {
         
         int[] my_array = {25, 14, 56, 5, 36, 89, 77, 18, 29, 49};
         
         max(my_array);
         min(my_array);

    }
    
}

問題是您正在更改minmax方法中的輸入數組:

my_array1[i+1] = my_array1[i];

因此,在下一次調用中,您正在操作一個與初始數組不同的數組。 事實上,在您的腳本中, max(my_array)設置my_array等於 [25, 25, 56, 56, 56, 89, 89, 89, 89, 89]。

您可以將minmax簡化為以下:

public static int max(int[] myArr) {
    int max = myArr[0];

    for (int i = 1; i < myArr.length; i++){
        if (myArr[i] > max)
            max = myArr[i];
    }

   return max;
}

public static int min(int[] myArr) {
    int min = myArr[0];

    for (int i = 1; i < myArr.length; i++){
        if (myArr[i] < min)
            min = myArr[i];
    }

    return min;
}

此外,我想推薦一些最佳實踐:

  • 在 java 中編程時使用駱駝案例。 myArray而不是my_array
  • 在 main 中打印方法的結果:
     public static void main(String[] args) { int[] myArray = {25, 14, 56, 5, 36, 89, 77, 18, 29, 49}; System.out.println("Max = " + max(myArray)); System.out.println("Min = " + min(myArray)); }

暫無
暫無

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

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