2013-03-02 79 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