我正在尝试将字符串与字符串值进行比较。看起来相当简单,但比较返回null。我想要的只是输出匹配的值并忽略null返回。但输出也显示空值。我已经以各种方式尝试过这种方法,但它会一直显示空值。
class ActionMovie extends cdinventoryprogram {
private String Atitle;
private double Avalue;
private double Rstock;
private String Ctitle;
public ActionMovie(String title, int itemNumber, int numberofUnits, double unitPrice ){
Atitle = title;
Avalue = numberofUnits * unitPrice;
Rstock = unitPrice * .05;}
public String getActionTitle(){
if (Atitle.equals("Matrix")){
Ctitle = Atitle;
}else if (!Atitle.equals("Matrix")){
}
return Ctitle;
}
}
public class cdinventoryprogram {
public static void main(String[] args) {
ActionMovie myAction[] = new ActionMovie[DEFAULT_LENGTH];
myAction[0] = new ActionMovie ("The Illusionist", 1, 5, 15.99);
myAction[1] = new ActionMovie ("Matrix", 2, 3, 14.99);
myAction[2] = new ActionMovie ("Old School", 3, 6, 12.99);
for ( ActionMovie currentActionMovie : myAction ){
CAction = currentActionMovie.getActionTitle();
JOptionPane.showMessageDialog( null, "Your action movie is: " + CAction);
}} }
答案 0 :(得分:2)
变化:
private String Ctitle;
要:
private String Ctitle = ""
答案 1 :(得分:2)
所以你想要返回一个空字符串而不是null?然后就这样做。
if (Atitle.equals("Matrix")){
Ctitle = Atitle;
} else {
Ctitle = "";
}
return Ctitle;
请注意,第二个if
非常多余,因此我也将其删除了。
当NullPointerException
实际为Atitle
时,请注意潜在的null
。为防止这种情况发生,您希望按照以下方式执行此操作,因为"Matrix"
永远不会null
。
if ("Matrix".equals(Atitle)){
Ctitle = Atitle;
} else {
Ctitle = "";
}
return Ctitle;
与此问题无关,我建议您完成标准Java naming conventions。类名应该以小写的大写和变量名开头。这样,代码对于每个其他Java开发人员(包括将来的自己)都具有更好的可读性。
更新:
不,如果字符串不匹配,我不想返回任何内容。如果不相等则返回一个值。 - user569127 3分钟前
然后返回null
。这只会将问题转移到显示值。如果是null
,则只是不显示它。例如。
if (CAction != null) {
JOptionPane.showMessageDialog(null, "Your action movie is: " + CAction);
}
这个问题的混乱可能是由于你对“返回”和“显示”这两个词的混淆造成的。
答案 2 :(得分:0)
如果Atitle不等于Matrix,则Ctitle将始终为null。设置Ctitle的默认值,使其永远不会返回null。
答案 3 :(得分:0)
问题是您的成员变量CTitle
已初始化(默认情况下)为null
,而您的getActionTitle()
方法只会更新其值,如果它等于字符串“Matrix”(否则它的价值没有变化)。因此该方法将返回其默认值(null),其打印为字符串“null”。
如果您不希望在某处打印返回值时看到“null”,那么您应该检查null并相应地执行操作,或者将CTitle
的默认值更改为,例如,空字符串(""
)。
答案 4 :(得分:0)
你确定Atitle正确设置并且它在某一点上等于“Matrix”吗?我建议在代码中设置一个断点,以便在它碰到比较之前检查Atitle的值。您也可以在构造函数中初始化Ctitle。