用Java反转数组的程序

时间:2013-03-08 00:24:39

标签: java arrays

我正在尝试使用下面显示的代码反转数组,但没有成功。该程序的输出为7,0,0,而不是7,1,2

代码:

import java.util.Arrays;

public class ReverseArray
{
    public static void main(String[] args)
    {
        int[] data = {1, 2, 7};
        int[] dataR = reverseArray(data);
        System.out.println("Original Array: " + Arrays.toString(data));
        System.out.println("Reverse Array: " +  Arrays.toString(dataR));
    }
    public static int[] reverseArray(int[] data)
    {
        int[] reversedData = new int[data.length];
        int i;
        for(i=0; i < data.length; i++);
        {
            reversedData[i] = data[(data.length - i -1)];
        }
        return reversedData;
    }
}

所有帮助表示感谢,谢谢。

6 个答案:

答案 0 :(得分:8)

这是你的问题:

for(i=0; i < data.length; i++);

删除;。你编写它的方式,首先是一个循环,将i计算到data.length,然后是一个范围内的块,它试图只访问reversedData[data.length]一次。那不会飞。

有趣的是:最初,我们当中没有人看到问题所在;在IDE中使用格式化规则会很快告诉你什么是错的:你会发现你的代码在按照你习惯的规则进行格式化时看起来不像它。

答案 1 :(得分:0)

您应该使用临时变量来交换数组中的值。例如:

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

ArrayUtils.reverse(int[] array)

所有问题都在this问题中进行了描述。

答案 2 :(得分:0)

好的捕获,G。巴赫。我也不确定你问题的第一部分。看起来原始数组是1, 2, 7。与此相反的是7, 2, 1而不是7, 1, 2

也就是说,看起来每次访问data.length可能会减慢速度。我可能会创建一个局部变量:

public static int[] reverseArray(int[] data)
{
    int arr_length = data.length
    int[] reversedData = new int[arr_length];
    int j = arr_length - 1;
    for(int i=0; i < arr_length; i++);
    {
        reversedData[i] = data[j--];
    }
    return reversedData;
}

注意j在被访问后如何自动递减,保持整洁。此外,我们已将数组的长度保存到局部变量中,因此访问效率更高。

答案 3 :(得分:0)

import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;

public class Solution {

    public static void main(String[] args) {
        /* Enter your code here. Read input from STDIN. Print output to STDOUT. Your class should be named Solution. */
        Scanner in=new Scanner(System.in);
        int size=in.nextInt();
        int array[]=new int[size];

        for(int i=0;i<size;i++){
            array[i]=in.nextInt();
        }
        for(int i=size-1;i>=0;i--)
        {
            System.out.print(array[i]+" ");
        }


        }

        }

答案 4 :(得分:0)

import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;

public class ReverseArray 
{

    public static void main(String[] args) 
    {

        System.out.println("Enter the array Size");
        Scanner in=new Scanner(System.in);
        int size=in.nextInt();
        System.out.println("Enter the array Elements");
        int array[]=new int[size];

        for(int i=0;i<size;i++){
            array[i]=in.nextInt();
        }
        System.out.println("reverse of entered are given below for Size : " +size );
        for(int i=size-1;i>=0;i--)
        {
            System.out.print(array[i]+" ");
        }


        }

}

答案 5 :(得分:0)

输入:

输入要反转的值数 7

1 2 3 4 6 7 8

输出: 反转数组:[8,2,3,4,6,7,1]

反向数组:[8、7、3、4、6、2、1]

反向数组:[8、7、6、4、3、2、1]

编码:

public class Test{

    public static void main(String[] args){

         System.out.println("Enter the number of values to reverse");

         Scanner sc = new Scanner(System.in);

         int n  = sc.nextInt();
         int num[] = new int[n];    
         for(int i=0; i < num.length; i++) 
             num[i] = sc.nextInt();

         reverseArray(num, n-1);

    }

    private static void reverseArray(int num[], int end) {
        int start = 0;
        int temp;

        while(start < end) {
            temp = num[start];
            num[start] = num[end];
            num[end] = temp;
            start++;
            end--;
            System.out.println("Reversed Array :"+ Arrays.toString(num));

        }


    }


}