将数组添加到 ArrayList

Posted

技术标签:

【中文标题】将数组添加到 ArrayList【英文标题】:Adding arrays to ArrayList 【发布时间】:2012-02-15 18:26:19 【问题描述】:

我正在尝试制作一种幸运抽奖乐透号码生成器。目前,代码将产生所需的结果,但我真的很想将数组放在 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");
    
 

Ticket 类将在运行时从用户那里获取 numberOfLines,然后打印出乐透彩票的前半部分,然后使用 Numbers 类生成并打印随机数,格式化它们,然后将它们打印到屏幕上并最后打印票的底部。

我真正应该做的是,将 Numbers 类中的数组存储到 Ticket 类的数组列表中,然后格式化这些行并从 Ticket 类中打印出来。

问题 1:如何将随机数行(数组)添加到 Ticket 类的数组列表中?

问题 2:如果它们在数组列表中,我将如何格式化这些行?

【问题讨论】:

为什么是这个pool 列表?这对我来说没有任何意义。只需使用randomNumber 它在那里是因为 populateArray() 方法必须避免重复,例如你不能在乐透中画两个 6,所以你也不能在乐透线上。 【参考方案1】:

要制作数组列表,您需要将列表声明为包含数组。

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

完成后,您将需要使用两个循环来显示结果集。一个用于迭代列表中的数组,另一个用于打印数字数组。

【讨论】:

首先,populateArray() 之所以这样是因为它必须避免重复,例如你不能在乐透中画两个 6,所以你不能在乐透中出现它也行。其次,问题的目的是将数组放入一个arraylist,而不是将数组变成arraylists。 @Arcadian:我已更新我的答案以解决您的实际问题。通过包含所有额外的代码,不清楚您的问题实际上是关于制作数组列表。将来,请包含最少量的代码来表达您的问题。 谢谢,这应该允许我将数组添加到列表中。我如何从那里格式化它们以便在票证上显示它们? @Arcadian:这取决于您实际希望它如何显示。最简单的方法是我在回答中描述的过程,即添加一个循环来环绕ticket() 中的现有循环。

以上是关于将数组添加到 ArrayList的主要内容,如果未能解决你的问题,请参考以下文章

第八章:集合

ArrayList和LinkedList

JAVA_ArrayList和HashSet

Java笔记java对象数组

ArrayList和LinkedList

Java集合之常用List