Java 为什么不是';我的if-else分支的其余部分是否正在执行?

Java 为什么不是';我的if-else分支的其余部分是否正在执行?,java,if-statement,multidimensional-array,Java,If Statement,Multidimensional Array,所以我昨晚发布了这个程序,我仍然是OOP的学徒,我不明白为什么我的方法中的if-else的其余部分不会执行。在执行return语句之前,我运行了debugger,它只查看我的if,从不查看if-else。这导致我的输出不会像预期的那样改变。以下是提到的方法: public String getBadge(int requestedStat) { String badgeOutput = ""; if (requestedStat >= 0 &&

所以我昨晚发布了这个程序,我仍然是OOP的学徒,我不明白为什么我的方法中的
if-else
的其余部分不会执行。在执行return语句之前,我运行了debugger,它只查看我的
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;
    }
公共字符串getBadge(int requestedStat){
字符串输出=”;
如果(requestedStat>=0&&requestedStat=badgePoints[requestedStat][i]
&&游戏分数[requestedStat]<徽章点数[requestedStat][i+1]){
badgeOutput=badgeTitles[requestedStat]+badgeRanks[i];
}else if(gamerActions[requestedStat]>=徽章点[requestedStat][i+1]
&&游戏操作[requestedStat]<徽章点[requestedStat][i+2]){
badgeOutput=badgeTitles[requestedStat]+badgeRanks[i+1];
}else if(gamerActions[requestedStat]>=徽章点[requestedStat][i+2]
&&游戏分数[requestedStat]<徽章点数[requestedStat][i+3]){
badgeOutput=badgeTitles[requestedStat]+badgeRanks[i+2];
}else if(gamerActions[requestedStat]>=徽章点[requestedStat][i+3]
&&游戏分数[requestedStat]<徽章点数[requestedStat][i+4]){
badgeOutput=badgeTitles[requestedStat]+badgeRanks[i+3];
}else if(gamerActions[requestedStat]>=徽章点[requestedStat][i+4]
&&游戏分数[requestedStat]<徽章点数[requestedStat][i+5]){
badgeOutput=badgeTitles[requestedStat]+badgeRanks[i+4];
}否则{
badgeOutput=badgeTitles[requestedStat]+badgeRanks[i+5];
}
} 
}否则{
badgeOutput=“没有可用的徽章”;
}
返回输出;
}
我知道我的设计可能不是最巧妙的方式,这就是我得到的。我做错了什么?
还有一篇文章介绍了所有其他类:

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语句,则程序不需要考虑其他的if .< /p>
你能澄清一下吗?您的代码类似于if、loop、if/else。如果没有触发哪个?好吧,如果
badgeRanks.length<5
,循环将永远不会进入。投票结束为“寻求调试帮助的问题('此代码为什么不工作?'))必须包括所需的行为、特定的问题或错误以及在问题本身中重现该问题所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。请参阅:。“在您的特定情况下,最大的问题是:(1)您的示例既不是最小的,也不是完整的;(2)至少对我来说,还不清楚您想要什么行为。添加System.out.println调用以转储相关变量,然后检查它们。第一个如果是执行的变量,其他变量则不执行。我希望他们这样做,因为我的测试驱动程序正在更新
gamerActions[]
中的随机值。我想让每个分支将给定索引处的值与给定索引处的设置值进行比较,
badgePoints[][]
,然后相应地更新字符串。我在该链接上得到了403,但只是想澄清一下。你是说,由于我的条件重叠,它们永远无法执行,因为第一条语句总是满足的?另外,感谢你在我的两篇帖子上的帮助:)试试这个:docs.oracle.com/javase/tutorial/java/nutsandolts/if.html,基本上是的。由于满足“if”,程序不需要查看else。不客气!