0

我正在编写一个 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声明,它仍然会跳过。任何帮助将非常感激!

4

4 回答 4

6

在 Java 中,我们将字符串与String#equals进行比较。

我不会写 和 之间的区别equals==谷歌了解更多信息。您将获得大约 100 个结果。

于 2013-05-05T20:44:43.973 回答
1

你最好if(choice.equals("D"))在你的代码中使用。您不能将字符串与 == 进行比较,因为您只是检查内存而不是实际内容。

于 2013-05-05T20:45:37.923 回答
0

You shouldn't be using the == operator to compare strings, use the String equals method instead. The operator checks to see if both strings are stored at the same location in memory while the method checks if they have the same content.

If you're using Java 7, you might want to switch out that if-elseif-then block with a switch statement. Java 7 introduced the ability to use strings in switch statements.

于 2013-05-05T21:47:59.547 回答
0

而不是在比较部分使用字符串:

else if(choice == "C"){
                currentCustomer.checkBalance();
            }

您可以改用字符比较

else if(choice[0] == 'C'){
                currentCustomer.checkBalance();
            }
于 2013-05-05T20:48:34.340 回答