在java中反转int数组

Reverse a int array in java

本问题已经有最佳答案,请猛点这里访问。

我编写了以下代码来反转一个int数组,但是,我看不到正确的结果。有什么提示吗?谢谢!

结果是

1
[I@15db9742[I@15db9742[I@15db9742[I@15db9742[I@15db9742[I@15db9742[I@15db9742[I@

这似乎很奇怪。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class reverseArray {
public static void main(String[] args) {
    int[] array = {2, 4, 5, 7, 8, 9, 12, 14, 17, 19, 22, 25, 27, 28, 33, 37};
    reverse(array, 0, array.length - 1);
}

public static void reverse(int[] data, int low, int high) {

    if (low < high) {
        int temp = data[low];
        data[low] = data[high];
        data[high] = temp;
        reverse(data, low + 1, high - 1);
    }
    System.out.print(data);
 }
}


您是System.out.print正在打印数组对象,而不是数组索引值。

使用如下:

1
System.out.print(data[low]);

您可以执行类似于打印数组的操作:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public static void main(String[] args) {
        int[] array = {2, 4, 5, 7, 8, 9, 12, 14, 17, 19, 22, 25, 27, 28, 33, 37};
        reverse(array, 0, array.length - 1);
        printArray(array);
    }

    public static void reverse(int[] data, int low, int high) {

        if (low < high) {
            int temp = data[low];
            data[low] = data[high];
            data[high] = temp;
            reverse(data, low + 1, high - 1);
        }
     }

    private static void printArray(int [] array){
        for(int i:array){
            System.out.print(i+"|");
        }
        System.out.println();
    }

Output: 37|33|28|27|25|22|19|17|14|12|9|8|7|5|4|2|