我正在编写一个ATM程序,当用户输入其中一个字符串值时,程序应检查它并相应地执行一个方法。问题代码在这里:
System.out.println("PRESS");
System.out.println("(D)eposit");
System.out.println("(W)ithdraw");
System.out.println("(C)heck Account Balance");
System.out.println("(Q)uit");
System.out.println("Enter Choice: ");
String choice = scanner.nextLine();
scanner.nextLine();
if(choice == "D"){
currentCustomer.deposit();
}
else if(choice == "W"){
currentCustomer.withdraw();
}
else if(choice == "C"){
currentCustomer.checkBalance();
}
else if(choice == "Q"){
currentCustomer.quit();
}
else{
System.out.println("Invalid choice please reenter: ");
}
如果用户输入“D”,程序将跳至else语句。我知道在使用.nextLine
时你必须使用两个因为返回字符,但我不确定这种情况是否属实。无论哪种方式,如果我有额外的.nextLine
声明,它仍然会向前跳过。任何帮助将不胜感激!
答案 0 :(得分:6)
在Java中,我们将字符串与String#equals进行比较。
我不会在equals
和==
之间写下区别,google了解更多信息。你将获得大约100个结果。
答案 1 :(得分:1)
最好在代码中使用if(choice.equals("D"))
。您无法将字符串与==进行比较,因为您只是检查内存而不是实际内容。
答案 2 :(得分:0)
而不是在比较部分中使用String:
else if(choice == "C"){
currentCustomer.checkBalance();
}
你可以使用字符比较
else if(choice[0] == 'C'){
currentCustomer.checkBalance();
}
答案 3 :(得分:0)
您不应该使用==运算符来比较字符串,而是使用String equals方法。操作员检查两个字符串是否存储在内存中的同一位置,而方法检查它们是否具有相同的内容。
如果您使用的是Java 7,则可能需要使用switch语句切换if-elseif-then块。 Java 7引入了在switch语句中使用字符串的能力。