我的目标:只做' stuffT'当布尔a=true
和b=true
时。
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
和[{1}}仍为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;
之后更新变量)
那么我怎样才能实现我的目标?
答案 0 :(得分:0)
您的代码(第一个)没问题。通过将conditionB
和true
替换为硬编码的conditionA
来检查它。调试评估条件的过程(conditionB
和conditionA
)。
同时检查conditionB
和condition
是否都可以为真,否则你就有可能没有离开你的循环(取决于你如何评价<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<div class="container-fluid">
<div class="form-inline">
<div class="row">
<div class="col-xs-6 col-md-6 col-lg-6">
<div class="form-group">
<label for="PositionDesp" class="control-label">Position:</label>
<input id="PositionDesp" name="PositionDesp" class="form-control" type="text" size="50" value="" readonly>
</div>
</div>
<div class="col-xs-3 col-sm-offset-1 col-sm-2 col-md-offset-0 col-md-3 col-lg-2">
<div class="form-group">
<label for="TotalFte" class="control-label">Total FTE:</label>
<input id="TotalFte" name="TotalFte" class="form-control" type="text" size="6" value="" readonly>
</div>
</div>
<div class="col-xs-3 col-sm-2 col-md-3 col-lg-4">
<div class="form-group">
<label for="BasePay" class="control-label">Base Pay:</label>
<input id="BasePay" name="BasePay" class="form-control" type="text" size="15" value="" readonly>
</div>
</div>
</div>
</div>
</div>
)
答案 1 :(得分:-1)
以下是代码。我只是假设条件。如果将a和b都设置为true,则会跳过while并转到if循环
public class testClass {
public static void main (String [] args)
{
boolean a=true,b=false;
while ((!a && b) || (a && !b)) {
System.out.println("a or b is false");
if (!a) {
a=true;
System.out.println("a is false");
break;
}
if (!b) {
b=true;
System.out.println("b is false");
break;
}
}
if (a && b) {
System.out.println("Both are true");
}
}
}