有些人可以告诉我我的代码有什么问题吗?即使我输入正确的密码,也无法通过getBalance()... :(
package home.exercises.exceptionHandling;
import java.util.InputMismatchException;
import java.util.Scanner;
public class Manager {
private double balance = 15000.25;
public void getBalance() throws InputMismatchException {
@SuppressWarnings("resource")
Scanner s = new Scanner(System.in);
System.out.println("Enter password: ");
String password = s.nextLine();
if (password == "ManagerWantsTogetBalance") {
System.out.println("Remainning balance is " + this.balance);
} else {
System.out.println("Wrong password! Try Again..");
}
}
}
package home.exercises.exceptionHandling;
import java.util.InputMismatchException;
public class TestManager {
public static void main(String[] args) {
Manager branchManager = new Manager();
try {
branchManager.getBalance();
}
catch(InputMismatchException iex) {
System.out.println("Put password in the correct form");
}
}
}
答案 0 :(得分:1)
问题在于:
password == "ManagerWantsTogetBalance"
您应该使用equals
(或equalsIgnoreCase
如果您不关心大写/小写差异)来比较两个String
,因为这些方法会检查实际内容
==
运算符会检查对象的引用是否相等(它们指向相同的内存区域)。
答案 1 :(得分:0)
您必须将Strings
与.equals()
功能进行比较,而不是将==
进行比较。
if("ManagerWantsTogetBalance".equals(password)){
//Code
}
答案 2 :(得分:0)
比较String时,我们使用.equals(“Whatyouwanttocompare”)方法。所以你的if语句应该是这样的 if(password.equals(“ManagerWantsTo GetBalance”)){ } 您使用==来比较原始数据类型,例如int和double等。
答案 3 :(得分:0)
==
运算符比较对象引用。因此,仅当操作数是相同对象时才返回true。在字符串的情况下,只有当对象是相同的字符串时才会返回true。如果要比较字符串,请使用equals
方法。如果字符串的内容与您期望的行为相同,则返回true:
string1.equals(string2)