[英]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);
}
}
問題是您正在更改min
和max
方法中的輸入數組:
my_array1[i+1] = my_array1[i];
因此,在下一次調用中,您正在操作一個與初始數組不同的數組。 事實上,在您的腳本中, max(my_array)
設置my_array
等於 [25, 25, 56, 56, 56, 89, 89, 89, 89, 89]。
您可以將min
和max
簡化為以下:
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;
}
此外,我想推薦一些最佳實踐:
myArray
而不是my_array
; 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.