我正在用Java编写一个交互式应用程序,而我的一个局部变量并没有将自己添加到类变量中,这会搞砸我的最终输出。
这是类变量public static double deduction;
这是我想要存储的内容
System.out.println("Do you want medical insurance?");
String choice = kb.nextLine();
if (choice == "yes")
{
medIns = 32.50;
}
else
{
medIns = 0;
}
System.out.println("Do you want dental insurance?");
choice = kb.nextLine();
if (choice == "yes")
{
dentIns = 20.00;
}
else
{
dentIns = 0;
}
System.out.println("Do you want long-term disability insurance?");
choice = kb.nextLine();
if (choice == "yes")
{
lifeIns = 10.00;
}
else
{
lifeIns = 0;
}
deduction = medIns + dentIns + lifeIns;
return deduction;`
以下是它最终进入totalpay = gross + (gross * retire) - deduction;
当我输入所有其他输入时,它不会将本地扣除存储到类扣除中,因此可以将其处理为我的总支付计算。
答案 0 :(得分:3)
deduction = medIns + dentIns + lifeIns;
始终为deduction = 0 + 0 + 0;
,无论您对==
运算符的误用是什么输入。
choice == "yes"
不是您在Java中比较Strings
的方式,在您的情况下,这绝不会是true
。
==
比较身份(左侧是与右侧完全相同的对象实例),.equals()
和.equalsIgnoreCase()
是您比较的方式Java中String
个对象的内容。
在您的情况下,正确的方法是"yes".equalsIgnoreCase(choice.trim())
首先放置文字,避免检查null
。
更全面的解决方案将匹配正则表达式
choice.matches("(?i)^y.*")
,它会匹配以y
开头的任何内容,并且无论大小写都有零个或多个字符,因为choice
不是null
。