2015-05-10 96 views
-2

我想顛倒數組元素。數組的大小是用戶定義的。任何人都可以修改這段代碼嗎?反向陣列的修改

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); 
} 
+6

其實你的第一行是錯的 –

回答

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

你可以使用一個for循環扭轉陣列。請參閱附件中的代碼。

4.最後,如果代碼是經過一些修改改寫那麼這將是 -

進口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

,你可以去類別:

ArrayList list = new ArrayList(); 

list.add("1"); 
list.add("2"); 
list.add("3"); 
list.add("4"); 
list.add("5"); 
Collections.reverse(list); 
System.out.println("After Reverse Order, ArrayList Contains : " + list); 

import java.util.ArrayList; 
import java.util.Collections; 
import java.util.List; 


public class Test { 

public static void main(String[] args) { 
    List<Integer> list = new ArrayList<Integer>(); 
    //Add elements to ArrayList object 
    list.add(1); 
    list.add(2); 
    list.add(3); 
    list.add(4); 
    list.add(5); 
    Collections.reverse(list); 
    System.out.println("After Reverse Order, ArrayList Contains : " + list); 
} 

} 
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數組大小。