为什么“i ++”在下面的片段中是一个死代码?

时间:2017-01-26 06:37:43

标签: java dead-code

使用eclipse编码时,代码i ++显示为死代码。那是什么意思?为什么它是一个死代码?

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

        int ScoreCard[] = {70,102,198, 60};
        String PlayersList[] = {"Mukesh","Suresh","Shardul","Nandan"};
        System.out.println(DisplayScore(ScoreCard, PlayersList));

    }

    public static String DisplayScore(int[] Scores, String[] Players){

        for( int i=0; i <= 3; i++){

            if(Scores[i]>100 && Scores[i]<=200){

                System.out.println("\n******Players who moved to next level******");
                return Players[i] + "\n";
            }
            else
            {
                System.out.println("\n******Players in Danger Level******");
                return Players[i] + "\n";
            }

        }
        return "\n";
    }
}

2 个答案:

答案 0 :(得分:3)

在所有可能的流程中,您在执行i++之前退出循环。有三种不同的可能流程:

  1. 你没有进入循环(只是理论 - 在你输入的情况下)。
  2. 你输入并且条件为真 - 如果阻止立即返回。
  3. 您输入且条件为假 - 立即返回其他区块。
  4. 在所有情况下,您都没有完成单循环,因此每次迭代后评估的代码都无法访问。

    for循环的工作原理如下:

    for (A; B; C)
        ^^ - executes before the loop starts (before first iteration
            ^^ - is evaluated before each iteration
               ^^ is evaluated after each full iteration, so is executed in case the loop executes
                  at least once
    

    就个人而言,我发现IDE已经发现了它。

答案 1 :(得分:0)

循环的第一次迭代将返回一个值,从方法中断开。因此,增量永远不会发生。

这个循环等同于它的第一次迭代:

if(Scores[0]>100 && Scores[0]<=200){
    System.out.println("\n******Players who moved to next level******");
} else {
    System.out.println("\n******Players in Danger Level******");
}
return Players[0] + "\n";