我有一个数组,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; (尽管有其他文本域数据)。在此先感谢
答案 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()))