在Java中反转一个int数组

Ste*_* Wu -2 java arrays

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

结果是

[I@15db9742[I@15db9742[I@15db9742[I@15db9742[I@15db9742[I@15db9742[I@15db9742[I@
Run Code Online (Sandbox Code Playgroud)

这似乎很奇怪。

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);
 }
}
Run Code Online (Sandbox Code Playgroud)

Ami*_*ati 5

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

用法如下:-

System.out.print(data[low]);
Run Code Online (Sandbox Code Playgroud)

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

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|
Run Code Online (Sandbox Code Playgroud)

  • [**关于离题/重复问题的建议吗?**](http://meta.stackoverflow.com/questions/276572/should-one-advise-on-off-topic-questions)鼓励更多不良行为,并向新用户教授错误的课程。 (2认同)