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

问题描述 投票:0回答:3

所以我再次对数组交换提出了一个小问题。

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

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”的图片:

Picture with the "/2"

没有“ / 2”的图片:

enter image description here

java arrays swap
3个回答
0
投票

因此,按照您的逻辑,您将从数组的最后一个索引开始,从索引开始对数组进行迭代,因此基本上您应该在交换后打印输出,因为交换仅完成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("}");

     } 

0
投票

交换每个元素后打印

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("}");
}

0
投票

嗯,我有一个简单的逻辑:如果您想使用数组,请说h []

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

现在运行循环,直到到达数组的中点,因为您将交换数字,直到仅到达中点。

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

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

© www.soinside.com 2019 - 2024. All rights reserved.