布尔值未正确应用

时间:2014-02-03 18:47:07

标签: java boolean

好吧,所以我有一个应该取客户名字的程序,无论名字中的字母是大写还是小写,如果他们是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时,无论是否大写,它都不会将折扣应用于价格。它编译并运行,它只是不应用折扣。

4 个答案:

答案 0 :(得分:3)

使用.equals(...)来比较String值:

"Mike".equals(firstName)

==比较Java对象的引用。使用==来比较 原始数据类型 值(例如booleanintdouble是完全正常的等)。

如果您想忽略字符的大小写,请使用.equalsIgnoreCase(...)

"Mike".equalsIgnoreCase(firstName)

Check out the String API, it has a lot of useful methods.

答案 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")NullPointerExceptionfirstName可以抛出null

答案 3 :(得分:1)

你可以使用equalIgnoreCase方法

"Mike".equalsIgnoreCase(firstName)

喜欢

if(firstName.equalsIgnoreCase("Mike") || firstName.equalsIgnoreCase("Diane"))
    {
        discount = true;
    }