在我之前的問題中,我開始知道如何找到數組中最大值的索引值。Java以新陣列作爲輸入,雖然我給源兩次
現在我的問題是我試圖通過交換數組[0]與最大值和另一個交換數組[0]與最小值使2個不同的數組。
在這裏,我能夠做到這一點,但問題是,首先我用最小值交換數組[0]。當我試圖用Max Value交換數組[0]時,被調用的數組是在用[Min]值交換數組[0]之後的數組輸出,但不是輸入中的實際數組。
import java.util.Arrays;
public class Cook {
public static void main(String[] args) {
int num[] = { 3, 1, 5, 2, 4 };
int start = 0;
int maxEnd = getMaxValue(num);
int minEnd = getMinValue(num);
System.out.println(Arrays.toString(num));
getMinvalueString(start, maxEnd, minEnd, num);
getMaxvalueString(start, maxEnd, minEnd, num);
}
private static void getMinvalueString(int start, int maxEnd, int minEnd, int[] num) {
int[] num1 = num;
int temp = num1[start];
num1[start] = num1[minEnd];
num1[minEnd] = temp;
System.out.println("After replace Min: " + Arrays.toString(num1));
}
private static void getMaxvalueString(int start, int maxEnd, int minEnd, int[] num) {
int[] num1 = num;
int temp = num1[start];
num1[start] = num1[maxEnd];
num1[maxEnd] = temp;
System.out.println("After replace: " + Arrays.toString(num1));
}
public static int getMaxValue(int[] num) {
int maxValue = num[0];
int getMaxIndex = 0;
for (int i = 1; i < num.length; i++) {
if (num[i] > maxValue) {
maxValue = num[i];
getMaxIndex = i;
}
}
System.out.println(getMaxIndex);
return getMaxIndex;
}
public static int getMinValue(int[] array) {
int minValue = array[0];
int getMinIndex = 0;
for (int i = 1; i < array.length; i++) {
if (array[i] < minValue) {
minValue = array[i];
getMinIndex = i;
}
}
System.out.println(getMinIndex);
return getMinIndex;
}
}
這裏雖然我已經有了一個新的數組num1
,老一套陣列(num
),結果收到了交換。請讓我知道我該如何解決這個問題。
電流輸出
[3, 1, 5, 2, 4]
After replace Min: [1, 3, 5, 2, 4]
After replace: [5, 3, 1, 2, 4]
期望輸出
[3, 1, 5, 2, 4]
After replace Min: [1, 3, 5, 2, 4]
After replace: [5, 1, 3, 2, 4]
由於
什麼是你期待的輸出? – Manu
我想你想複製數組。請參閱http://stackoverflow.com/questions/5785745/make-copy-of-array-java – Manu