2017-07-27 78 views
0

我的目标:当布尔型a=trueb=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;ab仍然true值。导致我的do 'stuffT'发生(当它不应该,如果ab具有false值)

我试着设置abnull第一然后更新自己的价值时breakwhile这样的:

boolean a,b; 
while (condition) 
{ 
    if (conditionA){a=false;break;} 
    else if(conditionB){b=false;break;} 
} 
if (a==true && b==true) 
{ 
    //do stuffT 
} 

但我得到错误:变量可能尚未初始化

也曾经试图break;第一,然后更新喜欢自己的价值:

if (conditionA){break;a=false;} 
else if(conditionB){break;b=false;} 

,但得到错误:不到的语句(用于break;之后更新变量)

所以,我怎么能实现我目标

+0

您确定'conditionA'或'conditionB'会发生一次吗?把'System.out.println(“a”);'紧跟在'a = false'之后,与b相同,以确保其中一个发生在 – azro

+0

的地方,你确定while循环甚至进入了吗?还有conditionA和conditionB –

+0

寻求调试帮助的问题(“为什么这个代码不工作?”)必须包含所需的行为,特定的问题或错误以及在问题本身中重现问题所需的最短代码。没有明确问题陈述的问题对其他读者无益。请参阅:[如何创建最小,完整和可验证示例](http://stackoverflow.com/help/mcve)。 – Paul

回答

0

您的代码(第一个)没问题。通过替换conditionAconditionB用硬编码的true值进行检查。调试评估你的条件的程序(conditionAconditionB)。 还要检查两个conditionAconditionB能永远是真实的,否则你在没有走出你的循环的风险(取决于你如何评价condition

+0

调试命题不是答案 – azro

+0

@azro我的答案是'代码是好的”。它符合问题中宣布的目标。它有什么问题? –

+0

他说他有问题,我没有看到你的帖子处理这个任何字,你只是说“你的代码看起来不错”,它没有提供任何信息给整个页面,并会帮助任何人后 – azro

-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"); 
      } 

     } 
} 
+0

你只是改变了外观,不是一个答案 – azro

+0

我认为我们的目标是“当两个都是真的时做东西”,这是我通过我的代码 – user8271644

+0

描述的,但显然问题在于其他,你给出相同的代码^^ – azro