0

我正在尝试制作一组if​​语句,其中每个语句都if将打印给定的某些参数为真,但else只打印if没有if返回任何 s 的语句。我认为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);

我能做些什么来消除对单独的布尔值来检查 if 的任何论点是否为真的需要吗?

编辑:(我刚刚注意到可能令人困惑的地方。我使用的代码实际上并没有使用返回。相反,它打印出结果,这意味着可以返回不止一件事。)

4

1 回答 1

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
}
于 2013-03-02T09:10:04.920 回答