【发布时间】:2018-01-03 13:15:48
【问题描述】:
我的目标:只在布尔值 a=true 和 b=true 时执行“stuffT”。
class myClass
{
public static void main (String [] args)
{
boolean a=true,b=true;
while (condition)
{
if (conditionA){a=false;break;}
else if(conditionB){b=false;break;}
}
if (a==true && b==true)
{
//do stuffT
}
}
}
但是在遇到break; 的值a 和b 之后仍然是true。导致我的do 'stuffT' 发生(当它不应该发生时,如果a 或b 具有false 值)
我尝试先将a 和b 设置为null,然后在break 和while 时更新它们的值,如下所示:
boolean a,b;
while (condition)
{
if (conditionA){a=false;break;}
else if(conditionB){b=false;break;}
}
if (a==true && b==true)
{
//do stuffT
}
但是我得到了错误: 变量a可能没有被初始化
也曾尝试先break;,然后像这样更新它们的值:
if (conditionA){break;a=false;}
else if(conditionB){break;b=false;}
但得到错误: 无法访问的语句(用于在break; 之后更新变量)
那么我该如何实现我的目标?
【问题讨论】:
-
您确定
conditionA或conditionB发生一次吗?在a=false之后放一个System.out.println("a");,b 也一样,以确保两者之一发生 -
条件从何而来,您确定甚至进入了while循环吗?还有条件A和条件B
-
寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现它所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。请参阅:How to create a Minimal, Complete, and Verifiable example。
-
我确定
conditionA或conditionB会发生,因为在我的“实际”代码中,break;通知“已经满足条件A”或“已经满足条件B” -
您能否添加
print并测试;)确定不是condition停止循环?因为如果你仅仅因为条件A或条件B而退出循环,你将永远不会做“东西”,所以condition可能暂时是假的
标签: java variables while-loop break