Java if或语句无法按预期工作

时间:2014-01-22 17:59:16

标签: java if-statement

我的if语句第一行中的or语句无法正常工作,有什么建议吗?

if(answer == "deposit" || "Deposit"){
        System.out.println("How much would you like to deposit?");
        final int deposit = console.readInt();
        account.deposit(deposit);
        System.out.println( "This leaves you with $" + formatter.format(account.getBalance()) + " in your account");
    }else if(answer == "Check Balance"){
        System.out.println( "You have $" + formatter.format(account.getBalance()) + " in your account");
    }else if(answer == "Withdraw"){
        System.out.println("How much would you like to take out?");
        final int with = console.readInt();
        account.withdraw(with);
        System.out.println( "This leaves you with $" + formatter.format(account.getBalance()) + " in your account");
    }else{
        System.out.println("You didn't enter a correct term, please try again.");
    }

6 个答案:

答案 0 :(得分:3)

首先,逻辑OR条件在Java中不像英语那样工作。你必须明确地写出来。第二,don't use == to compare String values. Use equals() for all String value comparisons

if ("deposit".equals(answer) || "Deposit".equals(answer))

或者您可以使用equalsIgnoreCase()

if ("deposit".equalsIgnoreCase(answer))

答案 1 :(得分:1)

使用'equals'方法进行字符串比较。例如。 answer.equals( “存款”)。

答案 2 :(得分:0)

使用if (answer.equals("deposit") || answer.equals("Deposit")) {

}else if(answer.equals("Check Balance")){

答案 3 :(得分:0)

测试Java中字符串是否相等不应该使用==,而是使用:

if ( answer.equals("Check Balance") ) 

使用==比较String个对象的指针,但answer"Check Balance"是不同的对象 - 第二个是在测试期间创建的,所以即使它们具有相同的值,他们并不完全相同。 equals仅检查对象的内容。

答案 4 :(得分:0)

对于String,您需要使用String.equals方法

if("deposit".equals(answer)){

答案 5 :(得分:0)

更改

if(answer == "deposit" || "Deposit"){

作为

if(answer.equalsIgnoreCase("deposit")){

if (answer.equals("deposit") || answer.equals("Deposit")) {

原因

{p} equals()类中存在

java.lang.Object方法,并且需要检查对象状态的等效性!这意味着,对象的内容。期望==运算符检查实际对象实例是否相同。

实施例

考虑两个不同的参考变量str1str2

str1 = new String("abc");
str2 = new String("abc");

如果您使用equals()

System.out.println((str1.equals(str2))?"TRUE":"FALSE");

您将获得TRUE

的输出

如果您使用==

 System.out.println((str1==str2)?"TRUE":"FALSE");

现在您将获得FALSE作为输出,因为str1str2都指向两个不同的对象,即使它们都共享相同的字符串内容。这是因为new String()每次创建一个新对象。