将数组添加到ArrayList

3

我正在尝试制作一种幸运抽奖彩票号码生成器。目前,代码可以产生所需的结果,但我真的很想将数组放在一个数组列表中。以下是我的代码:

彩票类:

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");
    }
 }

Ticket类将在运行时从用户获取numberOfLines,然后打印彩票的前一半,然后使用Numbers类生成和打印随机数字,格式化它们,然后将它们打印到屏幕上,最后打印票的底部。
实际上,我应该让Numbers类的数组存储到Ticket类中的arraylist中,然后从Ticket Class中格式化并打印它们。
问题1:我该如何将随机数行(数组)添加到Ticket类中的arraylist中?
问题2:如果它们在arraylist中,我该如何格式化这些行?

为什么要使用 pool 列表?这对我来说没有任何意义。直接使用 randomNumber 就可以了。 - Kai
这是因为populateArray()方法必须避免重复,例如在彩票中不能抽到两个6,因此在彩票行中也不能有它。 - Arcadian
1个回答

3
为了制作一个数组列表,你需要声明该列表包含一个数组。
List<int[]> arrs = new ArrayList<int[]>();

一旦你有了那个,你需要使用两个循环来展示结果集。一个循环用于迭代列表中的数组,而另一个用于打印数字数组。


首先,populateArray() 的编写方式是为了避免重复,例如在彩票中不能抽到两个6,因此在彩票行中也不能有两个6。其次,问题的目的是将数组放入一个ArrayList中,而不是将数组转换为ArrayList。 - Arcadian
1
@Arcadian:我已经更新了我的答案,以解决你实际的问题。通过包含所有额外的代码,你的问题并不清楚,实际上是关于如何创建一个数组列表。在将来,请只包含最少量的代码来传达你的问题。 - unholysampler
谢谢,这应该让我将数组添加到列表中。我该如何在其中格式化它们以便在票证上显示? - Arcadian
@Arcadian:这取决于您实际想要如何显示它。最简单的方法是我在我的答案中描述的过程,即添加一个循环来包装ticket()中现有的循环。 - unholysampler

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接