我编写了这段代码及其工作原理,但我似乎无法找到一种方法来编写它更容易。现在我正在指定所有可能的情况并向它们添加功能。如果我只使用两个布尔变量(status1和status2),如下面的代码中,它是可行的。但是如果我使用2个以上的变量,那么我需要写的代码太多了。
while (!status1 || !status2) {
if (!status1 && !status2) {
jTextField1.setForeground(Color.red);
jTextField2.setForeground(Color.red);
break;
} else if (!status1 && status2) {
jTextField1.setForeground(Color.red);
break;
} else if (status1 && !status2) {
jTextField2.setForeground(Color.red);
break;
}
基本上我想要实现的是写下面的代码(没有指定所有可能的情况)。我测试了这段代码,但它只执行第一个if语句而不执行其他语句。
我做错了什么?我希望它遍历所有if语句。
while (!status1 || !status2) {
if (!status1 {
jTextField1.setForeground(Color.red);
break;
} else if (!status2) {
jTextField2.setForeground(Color.red);
break;
}
答案 0 :(得分:1)
别的是你的问题。休息时间也不正确。
if (!status1) {
jTextField1.setForeground(Color.red);
}
if (!status2) {
jTextField2.setForeground(Color.red);
}
答案 1 :(得分:1)
while (!status1 || !status2 /* || !status3 || and so on*/) {
boolean do_break=false;
if (!status1) {
jTextField1.setForeground(Color.red);
do_break=true;
}
if (!status2) {
jTextField2.setForeground(Color.red);
do_break=true;
}
/* if (!status3) {
jTextField3.setForeground(Color.red);
do_break=true;
}*/
if(do_break) break;
here_the_part_that_you_omitted_from_the_question();//...
}
请澄清是否有一个你没有告诉我们的循环体。
答案 2 :(得分:0)
无法理解您使用while
循环的原因。这样的事情怎么样?
Color color1 = Color.red;
Color color2 = Color.red;
if (status1) {
color1 = 0;
}
if (status2) {
color2 = 0;
}
jTextField1.setForeground(color1);
jTextField2.setForeground(color2);
答案 3 :(得分:0)
我认为这是因为你在“while”语句中写的语句与第一个“if”语句相同。如果你写
while(true)
相反,它应该工作。
答案 4 :(得分:0)
这是简化的等效代码 您的代码:
while (!status1 || !status2) {
if (!status1 && !status2) {
jTextField1.setForeground(Color.red);
jTextField2.setForeground(Color.red);
break;
} else if (!status1 && status2) {
jTextField1.setForeground(Color.red);
break;
} else if (status1 && !status2) {
jTextField2.setForeground(Color.red);
break;
}
}
在上面的代码中,根本不需要“if”!因为我们在while循环中肯定至少有两个是假的,如果控制来到这里,所有“if”必须要失败!在这种情况下,这种情况永远不会失败!
结果相同,但简单一:尝试一下!
while (!status1 || !status2) {
if (status1) { //equivalent to (status1 && !status2)
jTextField2.setForeground(Color.red);
break;
} else if(status2){ //equivalent to (!status1 && status2)
jTextField1.setForeground(Color.red);
break;
}
jTextField2.setForeground(Color.red);
jTextField1.setForeground(Color.red);
break;
}