为什么我的if-else分支的其余部分不执行?

时间:2014-12-04 18:04:30

标签: java if-statement multidimensional-array

所以我昨晚发布了这个程序,并且仍然是我的OOP padawan,我很困惑为什么我的方法中的其余if-else将不会执行。在执行我的return语句之前,我运行了de-bugger并且它只查看了我的if而不是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

1 个答案:

答案 0 :(得分:1)

if语句,else if if stattement和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);
    }
}

如果没有完整的程序,很难说,但似乎你的其他陈述与if语句重叠。由于满足if语句,程序不需要考虑else if if。

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