如果没有,如何写(if,if,if)else

col*_*r96 0 java if-statement boolean

我正在尝试制作一组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);
Run Code Online (Sandbox Code Playgroud)

有什么我可以做的,以消除需要一个单独的布尔来检查if的参数是否为真?

编辑:(我只是注意到可能令人困惑的东西.使用的代码实际上并没有使用return.而是打印出结果,这意味着可以返回多个东西.)

NPE*_*NPE 8

由于您需要彼此独立地处理各个阶段,并且可以同时完成多个阶段,因此您的代码尽可能好.

以下是我对原始问题的回答:

你不需要布尔值.您的代码相当于:

if (redStage   == 2) { return redComplete; }
if (blueStage  == 2) { return blueComplete; }
if (greenStage == 2) { return greenComplete; }
return noneComplete;
Run Code Online (Sandbox Code Playgroud)

这利用了每个if身体都包含无条件的事实return.如果不是这种情况,您可以像这样表达构造:

if (redStage == 2) {
   // redComplete
} else if (blueStage == 2) {
   // blueComplete
} else if (greenStage == 2) {
   // greenComplete
} else {
   // noneComplete
}
Run Code Online (Sandbox Code Playgroud)