好吧,所以我有一个应该取客户名字的程序,无论名字中的字母是大写还是小写,如果他们是Mike或Diane,它都会将折扣设为真然后再申请折扣。默认情况下,discount = false。
获取名称并将折扣设置为true:
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时,无论是否大写,它都不会将折扣应用于价格。它编译并运行,它只是不应用折扣。
答案 0 :(得分:3)
使用.equals(...)
来比较String
值:
"Mike".equals(firstName)
==
比较Java对象的引用。使用==
来比较 原始数据类型 值(例如boolean
,int
,double
是完全正常的等)。
如果您想忽略字符的大小写,请使用.equalsIgnoreCase(...)
:
"Mike".equalsIgnoreCase(firstName)
答案 1 :(得分:2)
您不应该使用==
(引用相等)来确定字符串相等性,幸运的是有String#equalsIgnoreCase(String)方法。
boolean discount = ("Mike".equalsIgnoreCase(firstName) ||
"Diane".equalsIgnoreCase(firstName));
答案 2 :(得分:1)
==
比较字符串的引用。你可以使用equals:
<强>解决方案:强>
if(firstName.equalsIgnoreCase("Mike") || firstName.equalsIgnoreCase("Diane"))
{
discount = true;
}
提示强>
然而,最好写"Mike".equalsIgnoreCase(firstName)
而不是firstName.equalsIgnoreCase("Mike")
,因为您确定Mike
不是null
。如果firstName.equalsIgnoreCase("Mike")
为NullPointerException
,firstName
可以抛出null
。
答案 3 :(得分:1)
你可以使用equalIgnoreCase方法
"Mike".equalsIgnoreCase(firstName)
喜欢
if(firstName.equalsIgnoreCase("Mike") || firstName.equalsIgnoreCase("Diane"))
{
discount = true;
}