有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java反转数组

我编写了反转整数数组的代码。代码如下所示:

public class ReverseArray {

    public static void main(String[] args) {
        try {
            int[] arr = new int[5];
            arr[0] = 1;
            arr[1] = 2;
            arr[2] = 3;
            arr[3] = 4;
            arr[4] = 5;
            for (int i = 0; i <= arr.length/2; i++)
                int temp = arr[0];
                arr[0] = arr[arr.length - i - 1];
                arr[arr.length - i - 1] = temp;
            }
            System.out.println(arr);

        } catch (Exception e) {
            System.out.println(e);
        }
    }
}

但它并没有逆转阵列。。我得到以下输出

 [I@3bad086a

我看不出我的逻辑有什么问题


共 (6) 个答案

  1. # 1 楼答案

    您需要打印数组的内容,而不是数组本身。尝试使用循环遍历数组,并一次打印每个int

  2. # 2 楼答案

    你应该用Arrays.toString(arr)来做这个。 数组没有toString()的特定实现,因此调用它会导致对象的默认toString实现。在Java5中,作为arrays类中的一个静态方法,为数组添加了toString功能。我猜由于向后兼容性的考虑,它没有直接添加到数组中

    顺便说一下,代码中有一个小错误。我相信您希望交换索引length-i-1i(而不是0)中的值

  3. # 3 楼答案

    这就是将引用打印到数组中
    如果一次只打印一个元素,就会看到相反的数组

    编辑: 还有两点

    1. 当您打算使用arr[i]时,您正在使用arr[0]
    2. 更阴险的是:你迭代的太多了。你只需要迭代到arr.length / 2。既然这是一个家庭作业问题,我就让你们来找出原因;试着打印出中间结果并解释它们
  4. # 4 楼答案

    好东西:

    System.out.println(Arrays.toString(arr));
    
  5. # 5 楼答案

    你需要在数组中循环以打印它

    for (int i = 0; i <arr.length; i++) {
                System.out.println(arr[i]);
            }
    

    首先,我会保留上面的代码(这是错误的(^{),现在我相信你投票否决我是件好事)

    public class ReverseArray {    
        public static void main(String[] args) {
            try {
                int[] arr = new int[5];
                arr[0] = 1;
                arr[1] = 2;
                arr[2] = 3;
                arr[3] = 4;
                arr[4] = 5;
                for (int i = 0; i <= arr.length/2; i++){            
                    int temp = arr[i];
                    arr[i] = arr[arr.length - i - 1];
                    arr[arr.length - i - 1] = temp;
                    }
                    for (int i = 0; i <= arr.length -1 ; i++){ 
                        System.out.println(arr[i]);
                        }                
                }          
             catch (Exception e) {
                System.out.println(e);
            }
        }
    }
    

    现在,我将提出一些简单的建议

    1. for循环中缺少{}
    2. 不需要遍历整个数组,只需要遍历其中的一半,因此arr.length/2
  6. # 6 楼答案

    就这么做吧

    for (int i = 0; i <arr.length; i++) {
        System.out.println(arr[i]);
    }