打破时更新变量

时间:2017-07-27 17:08:52

标签: java variables while-loop break

我的目标:只做' stuffT'当布尔a=trueb=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,则不应该发生)

我首先尝试将ab设置为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;之后更新变量)

那么我怎样才能实现我的目标

2 个答案:

答案 0 :(得分:0)

您的代码(第一个)没问题。通过将conditionBtrue替换为硬编码的conditionA来检查它。调试评估条件的过程(conditionBconditionA)。 同时检查conditionBcondition是否都可以为真,否则你就有可能没有离开你的循环(取决于你如何评价<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");
            }

        }
}