即使条件不成立,while循环也会运行

时间:2019-06-13 15:19:27

标签: java loops while-loop boolean

我的while循环运行,即使其条件为false且其下一个为true。而且我无法运行它下面的那个。

这是我的APCS决赛。我正在尝试创建一些内容,该内容将根据选择来打印某个字符串,然后询问用户是否想要该字符串的新版本。我的问题是,它只能运行在第一选择上。

System.out.println("1 : UI design prompt");
        System.out.println("2 : Logo design prompt");
        System.out.println("3 : Exit program\n");

        String choice = in.next();


        UILists ui = new UILists();
        LogoLists logo = new LogoLists();

        Boolean uiBool = false;
        Boolean logoBool = false;

        if (choice.equals("1")) { uiBool = true; }
        else if (choice.equals("2")) { logoBool = true; }
        else if (choice.equals("3")) { System.exit(0); }

        while(uiBool = true) {
            System.out.println("\n\n\n\n\nPROMPT : Design " + ui.getRandomD() + " for " + ui.getRandomF() + " to help " + ui.getRandomH() + ".");

            uiBool = false;

            System.out.println("\n\n(Input 1 if you would like a new prompt, anything else to stop.)\n\n\n");
            String newUI = in.next();

            if (newUI.equals("1")) { uiBool = true; }
            else { System.exit(0); }
        }
        while(logoBool = true) { ... }

预期如果用户选择“ 2”,则将运行带有“ logoBool”条件的while循环。相反,无论如何都会运行带有“ uiBool”条件的while循环。

2 个答案:

答案 0 :(得分:1)

while检查中,您实际上是在执行作业...

while(uiBool = true)必须为while(uiBool == true),才能将其视为条件检查而非变量分配。

答案 1 :(得分:0)

主要原因是,您使用assignment operator(=)而不是equal operator(==)来检查true条件内的falsewhile loop。 当您在while循环中检查真假条件以进行内部操作时,可以简单地使用它们从while循环中删除assignment operator

 while(uiBool) {
            System.out.println("\n\n\n\n\nPROMPT : Design " + ui.getRandomD() + " for " + ui.getRandomF() + " to help " + ui.getRandomH() + ".");

            uiBool = false;

            System.out.println("\n\n(Input 1 if you would like a new prompt, anything else to stop.)\n\n\n");
            String newUI = in.next();

            if (newUI.equals("1")) { uiBool = true; }
            else { System.exit(0); }
        }
        while(logoBool) { ... }