2017-07-27 90 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