2014-12-04 2 views
1

어젯밤에이 프로그램을 게시했는데 여전히 OOP 파다완 인 이유는 내 방법에있는 나머지 if-else이 실행되지 않습니다. 나는 de-bugger를 돌 봤고, 내 if을 보았고 if-else을 보지 않았다. 결과적으로 내 출력이 변경되지 않습니다. 여기에 언급 된 방법이 있습니다 :나머지 if-else 분기가 실행되지 않는 이유는 무엇입니까?

public String getBadge(int requestedStat) { 
     String badgeOutput = ""; 
     if (requestedStat >= 0 && requestedStat <=9) { 
      for (int i = 0; i < badgeRanks.length-5; i++) { 
       if (gamerActions[requestedStat] >= badgePoints[requestedStat][i] 
         && gamerActions[requestedStat] < badgePoints[requestedStat][i + 1]) { 
        badgeOutput = badgeTitles[requestedStat] + badgeRanks[i]; 
       } else if (gamerActions[requestedStat] >= badgePoints[requestedStat][i + 1] 
         && gamerActions[requestedStat] < badgePoints[requestedStat][i + 2]) { 
        badgeOutput = badgeTitles[requestedStat] + badgeRanks[i + 1]; 
       } else if (gamerActions[requestedStat] >= badgePoints[requestedStat][i + 2] 
         && gamerActions[requestedStat] < badgePoints[requestedStat][i + 3]) { 
        badgeOutput = badgeTitles[requestedStat] + badgeRanks[i+2]; 
       } else if (gamerActions[requestedStat] >= badgePoints[requestedStat][i + 3] 
         && gamerActions[requestedStat] < badgePoints[requestedStat][i + 4]) { 
        badgeOutput = badgeTitles[requestedStat] + badgeRanks[i+3]; 
       } else if (gamerActions[requestedStat] >= badgePoints[requestedStat][i + 4] 
         && gamerActions[requestedStat] < badgePoints[requestedStat][i + 5]) { 
        badgeOutput = badgeTitles[requestedStat] + badgeRanks[i+4]; 
       } else { 
        badgeOutput = badgeTitles[requestedStat] + badgeRanks[i+5]; 
       } 
      } 
     } else { 
      badgeOutput = "No Badges Available"; 
     } 
     return badgeOutput; 
    } 

나는 내 디자인이 아마 그것을 할 가장 매끄러운 방법이 아니라는 것을 알고, 그게 내가 가진거야. 내가 도대체 ​​뭘 잘못하고있는 겁니까? 또한 다른 클래스의 전체 게시물이 있습니다. Difficulty navigating 2d String array that correlates to another 2d int array

+0

당신은 명확하게 할 수 있습니까? 귀하의 코드는 if, loop, if/else와 유사합니다. 발사하지 않으면 어떡하지? – MiiinimalLogic

+0

글쎄,'badgeRanks.length <5'이면 루프가 절대로 입력되지 않을 것입니다. – Eran

+1

"이 코드가 작동하지 않는 이유는 무엇입니까? **") 디버그 도움말을 찾는 질문으로 닫으려면 원하는 동작, * 특정 문제 또는 오류 * 및 *이를 재현하는 데 필요한 가장 짧은 코드 *를 포함해야합니다. ** 문제가 명확하지 않은 질문 **은 다른 독자에게 유용하지 않습니다. [최소, 완전하며 검증 가능한 예제를 만드는 방법] (http://stackoverflow.com/help/mcve)). " 당신의 특별한 경우, 가장 큰 문제는 다음과 같습니다 : (1) 귀하의 모범이 최소 또는 완전하지 않다; (2) 적어도 나에게 당신이 원하는 행동을 분명하지 않다. – ruakh

답변

1

if 문, else if 문 및 else 문은 코드에서 가능하지 않은 다른 중첩되지 않는 조건을 다루어야합니다. 예를 들어

:

class IfElseDemo { 
    public static void main(String[] args) { 

     int testscore = 76; 
     char grade; 

     if (testscore >= 90) { 
      grade = 'A'; 
     } else if (testscore >= 80) { 
      grade = 'B'; 
     } else if (testscore >= 70) { 
      grade = 'C'; 
     } else if (testscore >= 60) { 
      grade = 'D'; 
     } else { 
      grade = 'F'; 
     } 
     System.out.println("Grade = " + grade); 
    } 
} 

그것은 전체 프로그램없이 말하기 어렵지만, 그것은 당신의 else 문처럼 보인다는 if 문을 중첩된다. if 문이 만족되므로 프로그램은 else 문을 고려할 필요가 없습니다.

https://docs.oracle.com/javase/tutorial/java/nutsandbolts/if.html

+0

나는 그 링크에서 403을 얻었지만 명확히하기 위해. 제 조건문이 겹쳐지기 때문에 절대 실행하지 못한다는 말입니까? 또한 내 게시물에 대한 귀하의 도움에 감사드립니다. –

+0

다음을 시도하십시오. docs.oracle.com/javase/tutorial/java/nutsandbolts/if.html 그리고 기본적으로 그렇습니다. "if"가 만족되기 때문에 프로그램은 else를 볼 필요가 없습니다. 너는 대환영이야! –

관련 문제