我的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循环。
答案 0 :(得分:1)
在while
检查中,您实际上是在执行作业...
while(uiBool = true)
必须为while(uiBool == true)
,才能将其视为条件检查而非变量分配。
答案 1 :(得分:0)
主要原因是,您使用assignment operator(=)
而不是equal operator(==)
来检查true
条件内的false
或while 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) { ... }