来自不同类的对象的ArrayList - 空指针错误

时间:2015-05-23 02:21:14

标签: java arraylist

public void populatePrizeArraylist() {     ArrayList< Prize> prizeArrayList = new ArrayList< Prize>();     //我们将从中读取的文件的名称     文件filename =新文件(" prizes.txt");     尝试     {         //准备使用Scanner对象从文件中读取         FileReader inputFile = new FileReader(filename);         扫描程序解析器=新扫描程序(inputFile);         //读取每一行,直到到达文件末尾         while(parser.hasNextLine())         {             //读取整行,其中包含1个奖项的所有详细信息             String readFile = parser.nextLine();             字符串分隔符=",&#34 ;;             String [] fileList = readFile.trim()。split(delimiter);             奖品newPrize = new Prize();             newPrize.setPrizeName(的fileList [0]);             newPrize.setPrizeWorth(的Integer.parseInt(的fileList [1]));             newPrize.setPrizeCost(的Integer.parseInt(的fileList [2]));             this.prizeArrayList.add(newPrize);         }     } } 我在这做错了什么?我创建了一个新的ArrayList,然后创建了一个新对象并将一些值设置为该对象的name变量,但是当我尝试将该对象添加到我的arraylist时,我得到一个null point异常错误

3 个答案:

答案 0 :(得分:2)

此变量声明位于方法范围

ArrayList <Prize> prizeArrayList = new ArrayList <Prize>();

并且您正尝试使用

添加元素
this.prizeArrayList.add(newPrize);

所以我确定已经定义了一个类级变量“prizeArrayList”,它尚未初始化,并且您正在尝试添加它并获得NPE。

你必须使用

prizeArrayList.add(newPrize);

答案 1 :(得分:1)

goodsArrayList.setGoodName("Pants");
goodsArrayList.add(newItem);

错误,因为您需要致电setGoodName()newItem 试试这个:

newItem.setGoodName("Pants");
goodsArrayList.add(newItem);

答案 2 :(得分:1)

如果我正确阅读你的代码。 您正在void函数中填充数组列表。 在本地函数内部创建数组列表。 如果在函数endas之后没有返回该数组列表,则删除该数组列表。

有条件的建议,使用构造函数通过默认构造函数创建类是一个坏习惯,然后通过方法将其属性设置为某个值。