Java 布尔值应用不正确
好的,我有一个程序,应该取客户的名字,不管名字中的字母是大写还是小写,如果是Mike或Diane,它会将折扣设置为true,然后应用折扣。默认情况下,折扣=false 下面是获取名称并将折扣设置为true:Java 布尔值应用不正确,java,boolean,Java,Boolean,好的,我有一个程序,应该取客户的名字,不管名字中的字母是大写还是小写,如果是Mike或Diane,它会将折扣设置为true,然后应用折扣。默认情况下,折扣=false 下面是获取名称并将折扣设置为true: if (firstName == "Mike" || firstName == "Diane") { discount = true; } 稍后,当我尝试应用折扣并降低成本时,这里是: if (discount == true) { System.out.p
if (firstName == "Mike" || firstName == "Diane")
{
discount = true;
}
稍后,当我尝试应用折扣并降低成本时,这里是:
if (discount == true)
{
System.out.println("You are eligible for a $2.00 discount!");
cost = cost - (2.00);
}
然而问题是,当我使用Mike或Diane时,无论是否资本化,它都不会对价格应用折扣。它编译并运行,只是不应用折扣。使用.equals。。。要比较字符串值,请执行以下操作:
==比较Java对象的引用。使用==来比较基本数据类型值(例如boolean、int、double等)是非常好的
如果要忽略字符的大小写,请使用.equalsIgnoreCase…:
您不应该使用==引用相等来确定字符串相等,幸运的是有一个方法
==比较字符串的引用。您可以使用equals:
解决方案:
如果firstName.equalsIgnoreCaseMike | | firstName.equalsIgnoreCaseDiane
{
折扣=真;
}
提示:
不过,最好是编写Mike.equalsIgnoreCasefirstName而不是firstName.equalsIgnoreCaseMike,因为您可以确定Mike不是null。firstName.equalsIgnoreCaseMike可以在firstName为null时引发NullPointerException。您可以使用equalIgnoreCase方法
"Mike".equalsIgnoreCase(firstName)
像
使用String的equals方法来比较字符串值,而不是==运算符。1看一下。2如果折扣=true,则不要使用。就写成我的折扣吧。这样你就永远不会犯“如果折扣=真”这样的错误。不要忽略大小写。是的,他应该使用你在答案中给出的方法。我编辑我的帖子,谢谢。这不是不区分大小写的。
"Mike".equalsIgnoreCase(firstName)
boolean discount = ("Mike".equalsIgnoreCase(firstName) ||
"Diane".equalsIgnoreCase(firstName));
"Mike".equalsIgnoreCase(firstName)
if(firstName.equalsIgnoreCase("Mike") || firstName.equalsIgnoreCase("Diane"))
{
discount = true;
}