2012-01-21 54 views
3

我正在嘗試生成一種幸運抽彩樂透號碼生成器。目前,代碼將產生所需的結果,但我真的想要陣列中的數組列表。這裏是我到目前爲止的代碼:將陣列添加到ArrayList

客票艙位等級:

public class Ticket 
{ 
    private int numberOfLines; 

    public void displayTicket(int numberOfLines) 
    { 
     Numbers numbersClass = new Numbers(); 

     System.out.println("***************************************"); 
     System.out.println("**         **"); 
     System.out.println("**   Lotto Ticket   **"); 
     System.out.println("**         **"); 
     System.out.println("***************************************"); 
     System.out.println("**         **"); 

     for(int i = 0; i < numberOfLines; i++) 
     { 
      numbersClass.populateArray(); 
      numbersClass.ticket(); 
     } 

     System.out.println("**         **"); 
     System.out.println("***************************************"); 

    } 
} 

數類:

public class Numbers 
{ 
    // Fields 
    private int[] numberLine; 
    private int randomNumber; 
    private Random randomGen; 


    // Constructor : Initialise number array 
    public Numbers() 
    { 
     numberLine = new int[6]; 
     randomNumber = 0; 
     randomGen = new Random(); 
    } 

    // Method : Generate 6 random numbers in a range 1 to 49 
    public void populateArray() 
    { 
     List<Integer> pool = new ArrayList<Integer>(); 
     for (int i = 0; i < 49; ++i) 
     { 
      pool.add(i + 1); 
     } 
     for (int i = 0; i < 6; ++i) 
     { 
      randomNumber = randomGen.nextInt(pool.size()); 
      numberLine[i] = pool.get(randomNumber); 
      pool.remove(randomNumber); 
     } 
    } 

    // Method : Sort 6 numbers in ascending order 
    private int[] sortArray() 
    { 
     Arrays.sort(numberLine); 
     return numberLine; 
    } 

    // Method : Format and display 6 numbers to the screen 
    public void ticket() 
    { 
     System.out.print("**   "); 
     for (int i = 0; i < numberLine.length; i++) 
     { 
      if (numberLine[i] < 10) 
      { 
       System.out.print(" "); 
      } 
      System.out.print(numberLine[i] + " "); 
     } 
     System.out.print("  **\n"); 
    } 
} 

票證類將得到用戶在運行時的numberOfLines,然後打印出上半年然後使用Numbers類生成並打印隨機數,格式化它們,然後將它們打印到屏幕上,最後打印出票的底部。

我真的應該做的是將Numbers類中的數組存儲到Ticket類中的ArrayList中,然後格式化這些行並將它們從Ticket類打印出來。

問題1:如何將隨機數行(數組)添加到Ticket類中的數組列表中?

問題2:如果它們在數組列表中,我將如何格式化這些行?

+0

爲什麼這個'pool'列表?這對我來說沒有任何意義。只需使用'randomNumber'。 – Kai

+0

因爲populateArray()方法必須避免重複,所以你不能在樂透中畫出兩個6,所以你也不能把它放在樂透線上。 – Arcadian

回答

3

要創建數組的列表,您需要將列表聲明爲擁有一個數組。

List<int[]> arrs = new ArrayList<int[]>(); 

一旦你有了,你將需要使用兩個循環來顯示結果集。一個用於迭代列表中的數組和現在用於打印數組數組的數組。

+0

首先,populateArray()的原因是因爲它必須避免重複,例如,你不能在樂透中畫兩個6,所以你也不能在樂透線上得到它。 其次,問題的目的是把數組放入數組列表中,而不是將數組轉換爲數組列表。 – Arcadian

+1

@Arcadian:我已更新我的答案以解決您的實際問題。通過包含所有額外的代碼,您不清楚您的問題實際上是關於如何製作數組列表。將來,請包含最少量的代碼來傳達您的問題。 – unholysampler

+0

謝謝,這應該允許我將數組添加到列表中。我如何格式化它們以便將它們顯示在票據上? – Arcadian