反转数组中的值

时间:2018-03-20 00:43:06

标签: java arrays inversion

该程序旨在反转数组中的值。程序运行时,显示的唯一值是3和2,然后结束。我一直在网上看,但我无法弄清楚为什么会这样。在SOP中切换temp [i]给出的值给出0和1的值然后结束。

int[] val = {0, 1, 2, 3};
    int temp;            
        for(int i=0;i<val.length/2;i++)
        {
            temp=val[i];
            val[i]=val[val.length - 1 - i];
            val[val.length - 1 - i]=temp;

            System.out.println(val[i]);
        }

3 个答案:

答案 0 :(得分:3)

因为你的for循环只迭代值0和1,所以最后它只打印第0和第1个元素,试试

    int[] val = {0, 1, 2, 3};
    int temp;            
    for(int i=0;i<val.length/2;i++) {
                temp=val[i];
                val[i]=val[val.length - 1 - i];
                val[val.length - 1 - i]=temp;
    }
    for(int i=0;i<val.length;i++){
        System.out.println(val[i]);
    }

答案 1 :(得分:1)

使用val.lenth / 2只遍历数组的一半是有意义的,你可以随时交换值。在尝试打印整个阵列时,只遍历一半的数组是没有意义的。尝试使用另一个for循环打印出整个数组的内容。

编辑:我尽量不给出答案

答案 2 :(得分:1)

for(int i=0;i<val.length/2;i++)

val.length / 2 = 4/2 = 2,以便for循环只运行两次。这就是为什么它只打印3和2.

int[] val = {0, 1, 2, 3};
    int temp;            
        for(int i=0;i<val.length;i++)
        {
            if(i<val.length/2){
                temp=val[i];
                val[i]=val[val.length- 1 - i];
                val[val.length- 1 - i]=temp;
            }

            System.out.println(val[i]);

        }