3 回答

TA貢獻1835條經(jīng)驗 獲得超7個贊
您的 Max.max 方法更改了數(shù)組 - 以 . 開頭的 3 行int tmp =
。
您的問題的根源可能是不了解引用類型。 tmpArray = score
不會制作數(shù)組的單獨副本score
——您只有對同一個數(shù)組的兩個引用。這個概念是 Java 編程的基礎。

TA貢獻1833條經(jīng)驗 獲得超4個贊
int[]是對象,因此在 Java 中是通過引用傳遞的。當您在Max#max(int[])方法中執(zhí)行以下操作時:
int[] tmpArray;
tmpArray = score;
兩者tmpArray和score都將持有相同的引用,因此當您交換 中的值時tmpArray,score-array 也將被修改。
您必須為 , 創(chuàng)建一個新的整數(shù)數(shù)組tmpArray,然后復制這些值。最簡單的是以下兩種之一:
int[] tmpArray = score.clone();
// or:
int[] tmpArray = Arrays.copyOf(score, score.length);
我建議第二個,.clone()通常用于其他目的。

TA貢獻1836條經(jīng)驗 獲得超5個贊
int max (int[] score) {
int[] tmpArray;
tmpArray = score;
}
score是對數(shù)組對象的引用。在這里,您創(chuàng)建對現(xiàn)有數(shù)組的新引用。要修復它,只需創(chuàng)建一個新的數(shù)組對象:
int max(int[] score) {
int[] tmpArray = Arrays.copyOf(score, score.length);
}
添加回答
舉報