如何反转Java数组

时间:2014-03-22 10:08:49

标签: java arrays

我有一个非常简单的程序来反转一个整数数组,但每次我尝试运行它时,它只是忽略了第二个循环,反向应该发生并传递它或者它可能有些麻烦。

package chapter_1;

import java.util.*;

public class Reverse_array {

    public static void main(String[] args) {
        Scanner keybd = new Scanner(System.in);

        int[] arr = new int[10];

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

        for (int i = 0; i < arr.length; i++) {
            int temp = arr[i];
            arr[i] = arr[10 - 1 - i];
            arr[10 - 1 - i] = temp;
        }

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

5 个答案:

答案 0 :(得分:0)

它不会忽略第二个循环,它应该是

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

如果你从0迭代到arr.length那么它会反转你的数组两次,这最终会让你回到原始数组,

答案 1 :(得分:0)

这是问题

for (int i = 0; i < arr.length; i++) {
        int temp = arr[i];
        arr[i] = arr[10 - 1 - i];
        arr[10 - 1 - i] = temp;
}

你做两次数组元素交换

相反,请使用

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

答案 2 :(得分:0)

将arr.length更改为arr.length / 2。现在你要反转它两次。

答案 3 :(得分:0)

你应该浏览你的数组,直到他的一半不反转两次( - =&gt; +)。

始终尝试使用数组大小​​进行浏览。

  

for(int i = 0; i&lt; arr.length; i ++)

而不是

  

for(int i = 0; i&lt; 10; i ++)

它更通用和正确。您可以添加变量以保存数组大小。 所以你的代码将:

package chapter_1;

import java.util.*;

public class Reverse_array {

    public static void main(String[] args) {
        Scanner keybd = new Scanner(System.in);
        int arrayLenght = 10;
        int[] arr = new int[arrayLenght];

        for (int i = 0; i < arrayLenght; i++) {
            System.out.print("%[" + i + "]= ");
            arr[i] = keybd.nextInt();
        }

        for (int i = 0; i < arrayLenght / 2; i++) {
            int temp = arr[i];
            arr[i] = arr[arrayLenght - 1 - i];
            arr[arrayLenght - 1 - i] = temp;
        }

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

答案 4 :(得分:0)

我看到其他人在我写作时给了你解决方案。

让我给你一些建议: - 无论你在尝试什么,magane保持开发循环(错误,修改,试验和从开始再次)尽可能短。

手工插入数据很少是一个不错的选择

所以,在这种情况下:最好避免第一个循环并输入类似:int [] arr = {5,6,7,8,8,1,8,9,1,9};

- 如果有疑问请用打印填充代码以便您可以按照算法执行的操作,下一步将学会使用调试器,但第一步是打印指令

- 如果您想学习,请在尝试其他人帮助之前尽力(取决于您)