我的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.");
}
答案 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
方法,并且需要检查对象状态的等效性!这意味着,对象的内容。期望==
运算符检查实际对象实例是否相同。
实施例
考虑两个不同的参考变量str1
和str2
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
作为输出,因为str1
和str2
都指向两个不同的对象,即使它们都共享相同的字符串内容。这是因为new String()
每次创建一个新对象。