【问题标题】:Unreachable code in JavaJava中无法访问的代码
【发布时间】:2014-06-08 00:05:27
【问题描述】:

我不明白“无法​​访问的代码”是什么意思?

在我的代码double probabilityOfWin = wins / (wins + loses); 的最后一行,它说代码无法访问。

import java.util.Random;

 public class CrapsGame {
    public static final int GAMES = 9999;

public static void main(String[] args) {
    Random randomGenerator1 = new Random();
    Random randomGenerator2 = new Random();
    Random randomGenerator3 = new Random();
    Random randomGenerator4 = new Random();

    int dice1 = randomGenerator1.nextInt(6) + 1;
    int dice2 = randomGenerator2.nextInt(6) + 1;

    int comeoutSum = dice1 + dice2;
    int point = 0;

    // The comeout roll

    if (comeoutSum == 7 || comeoutSum == 12)
        System.out.println("wins");
    else if ( comeoutSum == 2 || comeoutSum == 3 || comeoutSum == 12)
        System.out.println("loses");
    else
         point = comeoutSum;

    int wins = 0;
    int loses = 0;


    while(GAMES <= 9999)
    {
        dice1 = randomGenerator3.nextInt(6) + 1;
        dice2 = randomGenerator4.nextInt(6) + 1;
        int sum = dice1 + dice2;

        if (sum == point)
            wins++;
        else if (sum == 7)
            loses++;
    }

    double probabilityOfWin = wins / (wins + loses);


}

}

【问题讨论】:

  • 那是因为 `while(GAMES
  • 如果你问我,编译器能识别出这种情况真是令人印象深刻。
  • 谢谢大家。我忘了修改game
  • 我相信你的代码的意图可能是有 while( gameCount
  • @MattCoubrough 是的,那是我的意图。但为什么它令人印象深刻?

标签: java


【解决方案1】:

这个循环在这里:

while(GAMES <= 9999)
{
    ...
}

解析为while (true),因为GAMES 的值永远不会被修改。因此,后面的任何代码(在您的情况下为double probabilityOfWin = wins / (wins + loses);)都被视为无法访问

【讨论】:

  • 请注意,GAMES 不能按照当前代码进行修改,因为它被声明为静态 final
  • @MattCoubrough 他问无法访问的代码是什么意思。他想如何解决问题(改变条件,改变变量类型,其他)取决于OP。但是,是的,有效的观点。
【解决方案2】:

您没有对常量GAME 进行任何更改。所以while 循环永远不会终止。最后一行代码无法访问。 无法访问意味着代码永远不会被执行。例如,

return 15;
int a = 12;

那么最后一行代码将不会被执行,因为函数已经返回。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多