Java:如何使用switch语句

Mat*_*att 2 java string-comparison switch-statement

可能重复:
如何比较Java中的字符串?

我无法理解如何使用Java switch语句.在其中一个case语句中执行一个方法之后,它仍然会转到default语句并运行它.这是代码:

Scanner scanner = new Scanner(System.in);
String option = null;

while (option != "5") {
    ShowMenu();
    option = scanner.nextLine();
    switch (option) {
        case "1": ViewAllProducts(); break;
        case "2": ViewProductDetails(scanner); break;
        case "3": DeleteProduct(scanner); break;
        case "4": AddProduct(scanner); break;
        case "5": break;
        default: System.out.println("Invalid option. Please try again."); break;
    }
}
Run Code Online (Sandbox Code Playgroud)

上面的代码是主要方法.以运行案例"4"为例,它会打印"无效选项".

Sam*_*iya 7

  while (!option.equals("5")){...}
Run Code Online (Sandbox Code Playgroud)

使用.equals()字符串比较.

==比较字符串引用(内存位置) .equals()比较字符串值


Pre*_*raj 6

您正在比较Strings与==您的while条件(比较引用而不是值 - 使用equals方法进行值相等),而loop应更改为以下 -

while (!option.equals("5"))
Run Code Online (Sandbox Code Playgroud)

由于运算符重载,它在C#中运行良好,而java中不允许运算符重载(尽管"+"因字符串和数字而重载)