Java equals不能像我期望的那样工作

时间:2016-10-27 13:38:04

标签: java console minesweeper

在第一个循环之后的While循环中,它确实突破了While循环,但它没有进入我的If检查,有没有人看到我做错了什么?

    while (!"Y".equals(inputString) && !"N".equals(inputString)) {
        inputString = Helper.InputHelper().toUpperCase();
        if (inputString.equals("N")) {
            System.out.println("Thank you for playing!");
            System.exit(0);
        } else if (inputString.equals("Y")) {
            System.out.println("Starting a new game");
            MineSweeper game;
            game = new MineSweeper();
        }
    }

每个人都是对的我是脑力衰退,将其改为

System.out.println("Would you like to play another game? (Y/N): ");
    String input = "";
    while (!"Y".equals(input) && !"N".equals(input)) {
        input = Helper.InputHelper().toUpperCase();
        if (input.equals("N")) {
            System.out.println("Thank you for playing!");
            System.exit(0);
        } else if (input.equals("Y")) {
            System.out.println("Starting a new game");
            MineSweeper game;
            game = new MineSweeper();
        }
    }

并且完美无瑕地谢谢你。

4 个答案:

答案 0 :(得分:0)

您必须重复阅读while循环中的用户输入 。 通常这是一个do-while-loop。

String inputString = null;
do
{
    inputString = new Scanner(System.in).next();
    System.out.println("inputString = " + inputString);
}
while (!"Y".equals(inputString) && !"N".equals(inputString));

答案 1 :(得分:0)

while (!"Y".equals(inputString) && !"N".equals(inputString)) 

你在while循环条件下遇到问题。

如果inputString不等于Y并且不等于N,则告诉while,然后输入while!

如果inputString等于Y或等于N,则应该输入循环。

否则您需要用户继续输入inputString

答案 2 :(得分:0)

我打赌这就是你想要的。

Scanner input = new Scanner(System.in);
    while (true) {        
        String answer = input.next().toUpperCase();
        if (answer.equals("N")) {
            System.out.println("Thank you for playing!");
            // don't forget to close you scanner
            input.close();
            System.exit(0);
            break;
        } else if (answer.equals("Y")) {
            System.out.println("Starting a new game");
            MineSweeper game;
            game = new MineSweeper();
            input.close();
            break;
        } else {
            // if you don't get appropriate answer from users then warn them about it
            System.out.println("Please type either Y or N");
        }
    }

无论哪种方式,当你遇到这种情况时,你应该打破,否则没有弯腰那个循环。

答案 3 :(得分:0)

始终建议您使用值进行一些测试,例如:

如果inputString =" N" while部分将评估为(!" Y" .equals(" N")&&!" N" .equals(" N&# 34)) 所以左边的部分是真的,右边的部分是假的,而AND使它全部为假,而无论用户是否放置N或Y,则while条件都不为真。 我认为你应该使用||简化你的while条件(OR)运算符并删除NOT(!)运算符。