2013-03-02 82 views
0

我試圖做一組if語句,其中每個if將打印給定一些參數是真實的,但else將只打印if沒有if已退回。我不認爲else if可以在這種情況下工作。如何寫(如果,如果,如果)否則如果沒有

我有一些代碼(顏色是一樣的例子):

boolean any=false; 

if(redStage==2) 
{ any=true; System.out.print(redComplete); } 

if(blueStage==2) 
{ any=true; System.out.print(blueComplete); } 

if(greenStage==2) 
{ any=true; System.out.print(greenComplete); } 

if(any==false) 
    System.out.print(noneComplete); 

有什麼我可以做,以消除需要一個單獨的布爾檢查任何的如果的觀點是否屬實?

編輯: (我只注意到了可能是混亂使用的代碼IM是不實際使用回報相反,它是打印出來的結果,這意味着可以返回不止一兩件事。)

回答

8

由於您需要彼此獨立地處理各個階段,並且可以同時完成多個階段,所以您的代碼儘可能好。

下面是我的回答你原來的問題:

你不需要布爾。您的代碼就相當於:

if (redStage == 2) { return redComplete; } 
if (blueStage == 2) { return blueComplete; } 
if (greenStage == 2) { return greenComplete; } 
return noneComplete; 

這使得利用每個if體包含一個無條件return的事實。如果不是這種情況,你可以像這樣描述結構:

if (redStage == 2) { 
    // redComplete 
} else if (blueStage == 2) { 
    // blueComplete 
} else if (greenStage == 2) { 
    // greenComplete 
} else { 
    // noneComplete 
} 
+0

這就是我要說的。 – 2013-03-02 09:11:26

+0

實際上,我看不到這是如何工作的。它似乎總是返回nonComplete,即使一個或多個階段是2 (我剛剛注意到可能會引起混淆的地方,我使用的代碼實際上並不使用return,而是打印出結果,這意味着可以返回多於一件事情。) – colinbr96 2013-03-02 09:25:52

+0

@colinbr96:如果您需要彼此獨立地處理各個階段,並且可以同時完成多個階段,那麼您的原始代碼就會盡可能好。 – NPE 2013-03-02 09:31:01