数组的反向输出没有按预期工作

Reverse output from array isnt working as expected

所以我又遇到了一个关于数组交换的小问题。

所以我在这里得到了这段代码:

public static void main(String[] args) {
    Scanner scan = new Scanner(System.in);
    Random random = new Random();
    int indexe = scan.nextInt();
    System.out.println("Ihre Indexauswahl: " + indexe);
    int[] array = new int[indexe];
    System.out.println("Array:");
    System.out.println("{");
    for (int i = 0; i < array.length; i++) {
        array[i] = 1 + random.nextInt(99);
        System.out.println(i + " => " + array[i]);
    }

    System.out.println("}\nArray:\n{");
    for (int i = 0; i < array.length / 2; i++) {
        int temp = array[i];
        array[i] = array[array.length - i - 1];
        array[array.length - i - 1] = temp;
        System.out.println(i + " => " + array[i]);
    }
    System.out.println("}");
}

我测试了数组的交换,如果我的数组中有 10 个索引,然后交换它,那么 System.out.print.

中只显示 5 个索引

如果我删除 for 条件中的“/2”,那么我会得到 10 个索引,但最后 5 个中的值是错误的。

我该如何解决这个问题?

带有“/2”的图片:

没有“/2”的图片:

交换每个元素后打印

public static void main(String[] args) {
    Random random = new Random();
    int[] array = new int[10];

    for (int i = 0; i < array.length; i++) {
        array[i] = 1 + random.nextInt(99);
    }
    printArray(array);
    for (int i = 0; i < array.length / 2; i++) {
        int temp = array[i];
        array[i] = array[array.length - i - 1];
        array[array.length - i - 1] = temp;

    }
    printArray(array);
}

private static void printArray(int[] array) {
    System.out.println("Array: {");
    for (int i = 0; i < array.length; i++) {
        System.out.println(i + " => " + array[i]);
    }
    System.out.println("}");
}

因此,根据您的逻辑,您从 last 开始获取索引并从 beginning 开始迭代数组,所以基本上您应该在交换后打印输出,因为交换仅完成 array.length / 2 次, 因此它的打印时间只有一半。

尝试执行以下代码:

public static void main(String []args){
        Scanner scan = new Scanner(System.in);
        Random random = new Random();
        int indexe = scan.nextInt();
        System.out.println("Ihre Indexauswahl: " + indexe);
        int[] array = new int[indexe];
        System.out.println("Array:");
        System.out.println("{");
        for (int i = 0; i < array.length; i++) {
            array[i] = 1 + random.nextInt(99);
            System.out.println(i + " => " + array[i]);
        }

        for (int i = 0; i < array.length / 2; i++) {
            int temp = array[i];
            array[i] = array[array.length - i - 1];
            array[array.length - i - 1] = temp;
        }
        System.out.println("}\nArray:\n{");
        for(int i = 0;  i < array.length ; i++) {
            System.out.println(i + " => " + array[i]);
        }
        System.out.println("}");

     } 

好吧,我有一个简单的逻辑: 如果你想使用数组说 h[]

取两个变量a,b。 a是起点,b是终点。所以 b=数组的长度。

现在 运行 一个循环,直到你到达数组的中点,因为你将交换数字直到你只到达中点。

因此将第一个元素与最后一个元素交换,依此类推,直到到达中点

int x=a[i]; a[i]=b[i]; x=b[i]; 我正在遍历数组 h