我输入“stop”后代码没有退出 - 出于某种原因。为什么? 逐步调试显示,在我输入“stop”之后,它的值由's','t','o','p'组成,没有任何换行符等等。但是,代码仍然没有出口。有人能说出原因吗?
import java.util.Scanner;
public class Application {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
// asking username
System.out.print("Username: ");
String username = input.nextLine();
String inpText;
do {
System.out.print(username + "$: ");
inpText = input.nextLine();
System.out.print("\n");
// analyzing
switch (inpText) {
case "start":
System.out.println("> Machine started!");
break;
case "stop":
System.out.println("> Stopped!");
break;
default:
System.out.println("> Command not recognized");
}
} while (inpText != "stop");
System.out.println("Bye!..");
}
}
答案 0 :(得分:2)
.equals()
而非==
,除非您真的知道自己在做什么。inpText != "stop" //Not recommended !"stop".equals(inpText) //recommended
如果源级别低于1.7,则无法为String类型的值打开。 只允许使用可转换的int值或枚举变量
答案 1 :(得分:0)
您正在使用这段代码比较指针而不是字符串:
while (inpText != "stop");
应该是这样的:
while (!"stop".equals(inpText));
答案 2 :(得分:0)
将 while(inpText!=“stop”); 更改为 while(!(inpText.equals(“stop”)));
答案 3 :(得分:0)
如果JDK为1.6或更低,则无法在字符串
上切换()P.S。 打开一个String可能不是最好的解决方案在java 1.6中你只能切换int,boolean,double,long和float我相信。