如何在For循环中添加到ArrayList

时间:2015-10-19 20:38:04

标签: java android for-loop arraylist

我随机生成了一系列信息。我想将这些信息保存在某种变量中,以便可以在别处调用。我想想我想使用一个ArrayList,但我不确定如何在for循环中(在创建它的地方)添加信息。我的代码如下:

public static ArrayList<String> phoneList

public static void main(String[] args){

    Random randomNumber = new Random();
    int howMany = randomNumber.nextInt(11);;
    String holding; 

    for (int i=0; i < howMany; i++){
        int itemRandNum = randomNumber.nextInt(11);//for all Item Categories
        int priceRandNum = randomNumber.nextInt(11);//Prices for all categories
        holding = phones[itemRandNum]+" $"+ priceOfPhones[priceRandNum]; 

        //System.out.println(holding);
        phoneList.add("holding"); //here is where I would like to add the information 
                                //contained in "holding" to the "phoneList" ArrayList.

    }

    System.out.println(phoneList);
}

我收到NullPointerException。如果ArrayList不是最好用的,那会是什么?

您可以提供的任何帮助表示赞赏。

3 个答案:

答案 0 :(得分:0)

您得到NullPointerException,因为ArrayList phoneList为空,因为您没有初始化它。因此写

public static ArrayList<String> phoneList = new ArrayList<>();

答案 1 :(得分:0)

public static void String Main(String[] args)表示这与Android没什么关系。

首先,实例化列表(在for循环之外):

phoneList = new ArrayList<>(howMany); //Adding "howMany" is optional. It just sets the List's initial size.

然后,添加值:

for (int i = 0; i < howMany; i++) {
    //...
    phoneList.add(holding); 
    //Don't place holding in quotation marks, else you'll just add "holding" for every entry!
}

答案 2 :(得分:0)

因为它只是声明类ArrayList没有实例化它。你有必要一直使用一个类来创建同一个类的实例,这很简单,只需:  public static ArrayList phoneList = new ArrayList()(如果你运行的是旧版本的java),否则使用public static ArrayList phoneList = new ArrayList&lt;&gt;()。