2012-01-21 157 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