反向阵列的修改

时间:2015-05-10 01:49:05

标签: java arrays list reverse

我想要反转数组元素。数组的大小是用户定义的。任何人都可以修改此代码吗?

public static void main(String[] args)
{
    int[] list = new int[list.length];
    int temp;
    Scanner input= new Scanner(System.in);
    System.out.print("Enter Size");
    list = input.nextInt();   // I get an error message here
    System.out.println("Now the reverse is:");
    for (int i = 0; i < list.length - 1; i++)
    {
        for(int j = list.length - 1; i > 0; j--)
        {
            temp = list[j];
            list[j] = list[i];
            list[i] = temp;
        }
    }
    System.out.println(" " + list);
}

2 个答案:

答案 0 :(得分:1)

有两个问题 -

1。您不能声明这样的数组 -

int[] list= new int[list.length];  

你必须提供像这样的数组大小 -

int[] list= new int[10]; 

甚至 -

int[] list= new int[N];

其中N是整数

2。 Input.next()int返回一个整数,所以你不能用这样的数组赋值 -

list= input.nextInt();

您可以这样做 -

int sizeOfArray;
sizeOfArray = input.nextInt();

3. 您可以使用一个for循环来反转数组。请参阅此处附带的代码。

4。最后,如果代码重新编写了一些修改,那么它将是 -

import java.util.Scanner;

public class ReverseArray{

    public static void main(String[] args){

        int[] list = {1, 2, 3, 4, 5, 6, 7, 8, 9};
        int temp;
        int sizeOfArray;

        Scanner input= new Scanner(System.in);

        /*Since array is initialized and populated here 
        * I have remove the size portion to take from user*/
        //System.out.print("Enter Size");
        //sizeOfArray = input.nextInt(); 

        int lastIndex = list.length-1;
        for(int i=0, j=lastIndex; i<j; i++, j--){

            temp = list[j];   
            list[j] = list[i];
            list[i] = temp;

        }

        System.out.println("Now the reverse is:");        
        for(int i=0; i<=lastIndex; i++){
            System.out.print(list[i] +" ");
        }
        System.out.println();
    }

}

答案 1 :(得分:1)

如果您真的想要低级答案,可以试试这个:

public static void main(String[] args) {
        int[] list= null;
        int temp;
        Scanner input= new Scanner(System.in);
        System.out.print("Enter Size");
        int size = input.nextInt();
        list = new int[size];
        for(int i=0; i<size;i++) {
            list[i] = i+1;
        }
        System.out.println("Original:");
        printArray(list);
        int[] reversed = new int[size];
                for (int i=0; i<list.length; i++) {
            reversed[i] = list[list.length - 1 - i];
        }
        System.out.println("Now the reverse is:");
        printArray(reversed);
    }
    private static void printArray(int[] arrayToPrint) {
        for(int i=0; i<arrayToPrint.length;i++)
        {
        System.out.println(arrayToPrint[i]);
        }
    }

当我测试它时,输出是:

Enter Size10 Original: 1 2 3 4 5 6 7 8 9 10 Now the reverse is: 10 9 8 7 6 5 4 3 2 1

否则我建议使用标准方法:Collections.reverse(Arrays.asList(array));

在您的代码行中int[] list= new int[list.length];行是问题,因为您需要将实际大小而不是list.length作为数组大小。