首页 > 解决方案 > 通过将数组迭代到一半来反转数组时出现错误

问题描述

我试图通过将数组运行到一半来反转数组,这样如果它有奇数个元素,则中间的元素被省略,因为不需要交换它,如果它是偶数,那么每个元素都将被交换,但我不知道我错在哪里。

import java.io.*;
import java.util.*;

public class Main{

    public static void main(String[] args) throws Exception {
        // write your code here
        Scanner scn = new Scanner(System.in);
        int x = scn.nextInt();
        int[] arr = new int[x];
        for(int i = 0 ; i < arr.length ; i++)
        {
            arr[i] = scn.nextInt();
        }
        int temp = x;
        for(int i = 0  ; i < temp / 2 ;i++)
        {
            int temp1 = arr[i];
            arr[i] = arr[x - 1];
            arr[x - 1] = temp1;
            x--;
        }
        for(int z=0;z<arr.length;z++)
        {
            System.out.println(arr[z]);
        }
    }
}

标签: java

解决方案


你的尝试非常接近。请参阅以下内容进行更改。

       for(int i = 0  ; i < temp / 2 ;i++)
        {
            int temp1 = arr[i];
            arr[i] = arr[x - 1]; // should be arr[x - i - 1]
            arr[x - 1] = temp1;  // should be arr[x - i - 1]
            x--; // delete this line
        }


推荐阅读