Java中Do/While循环的问题

Dan*_*pel 2 java loops while-loop do-while

这段代码是我正在制作的二十一点游戏的片段.无论我输入什么,程序永远不会打破循环.

boolean bool = true;
do{
    Scanner kb = new Scanner(System.in);
    String choice = kb.next();
    if(choice == "Hit" || choice == "hit") {
        String action = "hit";
        bool = false;
    } else if(choice == "Stay" || choice == "stay") {
        String action = "stay";
        bool = false;
    } else {
        System.out.println("Do not recognize response. Retry.");
    }
} while (bool == true);
Run Code Online (Sandbox Code Playgroud)

通常会发生什么:http: //puu.sh/87KZk.png

任何帮助,将不胜感激.谢谢!

nme*_*ego 5

您正在使用==比较字符串.在Java中,我们比较字符串.equals().

你可以这样做:

boolean bool = true;
do {
    Scanner kb = new Scanner(System.in);
    String choice = kb.next();
    if(choice.equals("Hit") || choice.equals("hit")) {
        String action = "hit";
        bool = false;
    } else if(choice.equals("Stay") || choice.equals("stay")) {
        String action = "stay";
        bool = false;
    } else {
        System.out.println("Do not recognize response. Retry.");
    }
} while (bool == true);
Run Code Online (Sandbox Code Playgroud)

为清晰起见,我还格式化了代码的某些部分.如下面的注释所示,您还可以使用equalsIgnoreCase比较字符串而不管其大小写.

希望这可以帮助!

  • 另外值得一提的是,[`equalsIgnoreCase`](http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#equalsIgnoreCase%28java.lang.String%29) (2认同)