如何将局部变量存储到java中的类变量中?

时间:2014-02-23 19:23:42

标签: java

我正在用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;

的内容

当我输入所有其他输入时,它不会将本地扣除存储到类扣除中,因此可以将其处理为我的总支付计算。

1 个答案:

答案 0 :(得分:3)

你的if / else语句总是错误的!

deduction = medIns + dentIns + lifeIns;始终为deduction = 0 + 0 + 0;,无论您对==运算符的误用是什么输入。

== vs .equals()vs .equalsIgnoreCase()

choice == "yes"不是您在Java中比较Strings的方式,在您的情况下,这绝不会是true

==比较身份(左侧是与右侧完全相同的对象实例),.equals().equalsIgnoreCase()是您比较的方式Java中String个对象的内容。

惯用解决方案

在您的情况下,正确的方法是"yes".equalsIgnoreCase(choice.trim())首先放置文字,避免检查null

更全面的解决方案将匹配正则表达式

choice.matches("(?i)^y.*"),它会匹配以y开头的任何内容,并且无论大小写都有零个或多个字符,因为choice不是null