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"为例,它会打印"无效选项".
while (!option.equals("5")){...}
Run Code Online (Sandbox Code Playgroud)
使用.equals()字符串比较.
==比较字符串引用(内存位置)
.equals()比较字符串值
您正在比较Strings与==您的while条件(比较引用而不是值 - 使用equals方法进行值相等),而loop应更改为以下 -
while (!option.equals("5"))
Run Code Online (Sandbox Code Playgroud)
由于运算符重载,它在C#中运行良好,而java中不允许运算符重载(尽管"+"因字符串和数字而重载)