我试图反转一个int值数组。它似乎没有正确地做到这一点。
您会注意到我以不同的方式打印,例如Array.toString()
以及使用println
。
原始数组打印:
1 4 9 16 9
我需要它打印:
9 16 9 4 1
这是我的代码:
import java.util.Arrays;
public class ReverseArray {
public static void main(String[] args) {
int[] data = { 1, 4, 9, 16, 9 };
reverseArray(data);
int[] dataR = reverseArray(data);
System.out.println("Reveresed data " + Arrays.toString(dataR));
}
public static int[] reverseArray(int[] data) { // returns the reverse of the
// array data
// int [] data = new int[5];
int[] reversedData = new int[data.length];
data[0] = 1;
data[1] = 4;
data[2] = 9;
data[3] = 16;
data[4] = 9;
System.out.println(Arrays.toString(data));
for (int i = 0; i < data.length - 1; i++) {
System.out.println("Original Array: " + data[i]);
}
int reveresedData[] = data;
for (int i = 0; i < reveresedData.length - 1; i++) {
reversedData[(data.length - 1) - i] = data[i];
System.out.println(reveresedData[i]);
}
return reveresedData;
}
}
答案 0 :(得分:2)
问题在于:
int reveresedData[] = data;
使reveresedData
指向与data
相同的数组。相反,您需要创建一个新数组(或更改算法以使其反转数组)。
要创建新数组,您可以使用以下任一项:
int reveresedData[] = new int[data.length];
int reveresedData[] = data.clone();
答案 1 :(得分:2)
(使用For each循环:更智能的方式) 创建一个方法如下:
private int[] reverseArray(int [] array1){
int index=array1.length;
int [] array2 = new int[index];
for(int i:array1){
array2[index-1]= i;
index--;
}
return array2;
}
并称之为:
int [] array1 = {1,2,3};
int reversedArray[] = reverseArray(array1);
多数民众赞成。
答案 2 :(得分:1)
应该是这样的:
int reversed[] = new int[data.length];
这将为新数组分配空间,您可以按相反顺序填充数据值。
for (int i = 0,j=reversed.length-1; i < reversed.length-1; i++;j--){
reversed[i]=data[j];
}
答案 3 :(得分:1)
这是任何大小的反向数组的基本方法。它会反转原始数组。
public class ReverseMyArray {
public static int[] reverseArray(int[] array) {
for(int i=0; i<array.length/2; i++) {
int temp = array[i]; // temp is a temporary variable of type int
array[i] = array[array.length-1-i];
array[array.length-1-i] = temp;
}
return array;
}
public static void main(String[] args) {
int[] array = {1,4,9,16,9};
int[] newArray = reverseArray(array);
for(int i=0; i<newArray.length; i++) {
System.out.print(newArray[i]+" "); // Print the reversed array values
}
}
}