0

出于某种原因,我键入“停止”后代码不会退出。为什么?逐步调试表明,在我输入“停止”后,它的值完全由 '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!..");
}
}
4

4 回答 4

2
  • 比较字符串use .equals()and not ==,除非您真的知道自己在做什么。
inpText != "stop" //Not recommended
!"stop".equals(inpText) //recommended

无法为低于 1.7 的源级别打开字符串类型的值。只允许可转换的 int 值或枚举变量

于 2013-08-02T10:42:46.897 回答
0

您正在将指针而不是字符串与这段代码进行比较:

while (inpText != "stop");

应该是这样的:

while (!"stop".equals(inpText));
于 2013-08-02T10:33:32.267 回答
0

更改而(inpText!=“停止”);while (!(inpText.equals("stop")));

于 2013-08-02T10:34:10.890 回答
0

如果您的 JDK 为 1.6 或更低版本,则无法 switch() 字符串

PS 切换字符串可能不是最好的解决方案是的,在 java 1.6 中,我相信您只能切换 int、boolean、double、long 和 float。

于 2013-08-02T11:33:45.600 回答