2010-10-28 72 views
0
import java.util.Arrays; 
import java.util.*; 

class Main { 
public static void main(String[] args) { 

} 
    } 

class List { 


private static final int NUMINTS = 10; 
public List(int numints) { 

    int list[]; 
    list = new int[NUMINTS]; 

} 

public void fillWithRandom(int list[]) { 
Random r; 
r = new Random(); 

int i; 

for(i=0; i < NUMINTS ; i++) 
    list[i] = r.nextInt(); 
} 

public void print(int list[]) { 
    int i; 
    System.out.println("before sort():"); 
    for(i=0 ; i < NUMINTS; i++) 
     System.out.println(list[i]); 

    Arrays.sort(list, 0, NUMINTS); 
    System.out.println("--------"); 
    System.out.println("after sort():"); 
    for (i = 0 ; i < NUMINTS; i++) 
     System.out.println(list[i]); 
} 
    } 

我想創建一個隨機數組。我不太清楚如何將我的類List中的方法實現到Main類中。我想主要創建數組,然後打印出來。通過另一個類的運行類方法

回答

0

的一個問題是,你不使用傳入的參數,

public List(int numints) { // numints never used, hence useless 
     int list[]; 
     list = new int[NUMINTS]; // list is a local variable. It has no scope outside this 
           // method and the method also doesn't have any side-effect  
    } 

現在想來,這一點,你可以怎麼稱呼List類的方法在Main類的main()方法。

public static void main(String[] args) { 
    List list = new List(10); 
    int[] intArr = new intArr[10]; 

    list.fillWithRandom(intArr); 
    list.print(intArr); 
} 

一些建議,

  1. 其更好地聲明數組類型像這樣int[] arr;代替int arr[]
  2. 如果必須使用2類,那麼看來你應該在你的List類有一個int[] intArr; 。所以,你不必通過intArr向後或向前
  3. 使用初始化參數的陣列接收,不與NUMINTS
1

看起來你在int數組和你創建的名爲List的類之間感到困惑。既然你看起來很喜歡在int數組中傳遞,我會建議擺脫List類(或者把它作爲你的類並在那裏添加一個主要方法)。實際上,只需要創建一個int [10],用隨機數填充它,然後在主要方法中打印出所有數據。這可以讓您快速測試,而無需擔心類,實例化和方法調用。然後,一旦你有了這些,將每個這些操作抽象回方法,並從main調用方法。

如果一個方法不是靜態的,那麼你不能直接從靜態方法(main)調用它,除非你在類的實例上調用它。例如,您不能調用List.print(int []),因爲它不是靜態的,所以您必須創建一個List對象,然後在該對象上調用print(int [])。

tl; dr我想提供一些提示/建議,因爲這看起來很像一個家庭作業問題。在你的代碼