2013-03-02 2 views
0

주어진 if의 그룹을 만들려고합니다. 주어진 각 인수가 true 일 때 if이 인쇄되지만 else이면 인쇄되지 않습니다. ifif이 반환되었습니다. 이 경우에는 else if이 작동하지 않을 것이라고 생각합니다.쓰는 방법 (if, if, if) else가 없으면

나는 몇 가지 코드를 가지고 (색상은 예과 같다) : 나는 경우의 주장 중 하나가 사실 여부를 확인하기 위해 별도의 부울에 대한 필요성을 제거하기 위해 할 수있는 일이

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); 

있습니까?

편집

: 는 (난 그냥 혼동 될 수 있습니다 것을 발견 코드 메신저 실제로 수익을 사용하지 않는 사용하는 대신, 하나 이상의 일이 반환 될 수 있음을 의미 결과를 밖으로 인쇄됩니다...)

답변

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

그건 내가 말하려고했던 것입니다. –

+0

이 방법이 실제로 작동하지 않습니다. 하나 이상의 스테이지가 2 인 경우에도 항상 nonComplete를 반환하는 것처럼 보입니다. (혼동을 줄 수있는 것으로 나타났습니다. 사용하는 코드는 실제로 return을 사용하지 않고 대신 결과를 출력합니다. 둘 이상의 것을 반환 할 수 있습니다.) – colinbr96

+0

@ colinbr96 : 서로 독립적으로 스테이지를 처리해야하고 둘 이상의 스테이지를 동시에 완료해야하는 경우 원본 코드는 가능한 한 훌륭하게 처리됩니다. – NPE

관련 문제