尝试向阵列添加新对象时是否为空指针异常?

时间:2014-03-07 15:08:48

标签: java arrays object nullpointerexception

我有一个数组,moviearray,逻辑大小为15,物理大小为50.我有以下代码:

    for(int a=0;a<moviearray.length;a++)
            {
                if (moviearray[a]!=null)
                    {
                        if(moviearray[a].getTitle()==catAddTitle.getText())
                        {
                            moviearray[a].addExisting(Integer.parseInt(catAddNumber.getText()));
                            break;
                        }
                    }   
                else
                {
                    moviearray[a].setTitle(catAddTitle.getText());
                    moviearray[a].setNumber(Integer.parseInt(catAddNumber.getText()));
                    moviearray[a].setGenre(catAddGenre.getText());
                    moviearray[a].setYear(Integer.parseInt(catAddYear.getText()));
                    moviearray[a].setRating(catAddRating.getSelectedItem());
                    moviearray[a].setPrice(Double.parseDouble(catAddPrice.getText()));
                    break;
                }
            }

我正试着这样做,当我在catAddTitle(文本字段)中输入电影标题,并且它匹配当前在moviearray中的电影时,它将通过在电影阵列中输入的数字增加电影的数量元素。 textfield catAddNumber。但是,当我尝试这样做时,它在行上给了我一个nullpointerexception:

    moviearray[a].setTitle(catAddTitle.getText()); 

示例:数组中的一个对象具有元素&#34; Hobbit / 55 / Adventure / 2012 / PG-13 / 10.00&#34; (标题,数量,类型,年份,评级,价格)。应该怎么办呢,当我进入&#34; Hobbit&#34;进入catAddTitle和&#34; 3&#34;进入catAddNumber,它应该将数字更改为&#34; 58&#34; (尽管有其他文本域数据)。在此先感谢

2 个答案:

答案 0 :(得分:4)

在你的else分支中 - 只有在moviearray[a] == null时执行 - 你需要做

moviearray[a] = new YourObject();

首先,即创建一个类的实例并将其存储在数组中。

答案 1 :(得分:1)

您需要将字符串与equals()进行比较,而不是与==运算符

进行比较

更改此行
if(moviearray[a].getTitle()==catAddTitle.getText())

if(moviearray[a].getTitle().equals(catAddTitle.getText()))