繁体   English   中英

此代码是无法访问的代码,我不知道为什么

[英]This code is getting unreachable code, and I'm not sure why

抱歉有大量代码,但我不知道为什么

int timesWon;

在第 90 行出现无法访问的代码错误。放在第 90 行的任何内容都是无法访问的代码,这意味着它之后的任何内容都不可读。

这是我为任务进行掷骰子游戏的代码:

package homework2_3;

import java.security.*;

public class Craps 
{
    static enum score
    {
        win, lose
    }
    public static void main(String[] args)
    {
        //random Number for a dice roll
        SecureRandom random = new SecureRandom();
        //ints for the totals on the two dice
        int dice1;
        int dice2;
        //array for times won/lost
        score[] total = new score[1000000];
        //int for the score of the first throw, if it was not an imediate win or loss
        int throw1Score = 0;

        //count how many times a win or loss happened at each roll from 1-21
        int[] rollWon = new int[22];
        int[] rollLost = new int[22];

        //loop for each game from 1-1000000
        for(int indexGame = 1; 1 <= 1000000; indexGame++)
        {
            //loop for each throw within a game
            for(int indexThrow = 1; total[indexGame] != score.win || total[indexGame] != score.lose; indexThrow++)
            {
                //get the total of blips on the dice
                dice1 = random.nextInt(6) + 1;
                dice2 = random.nextInt(6) + 1;
                //check if the throw total in throw 1
                if(indexThrow == 1)
                {
                    //check if throw 1 is an instant win
                    if((dice1 + dice2) == 7 || (dice1 + dice2) == 11)
                    {
                        total[indexGame] = score.win;
                        rollWon[indexThrow]++;
                    }
                    //check if throw 1 is an instant loss
                    else if((dice1 + dice2) == 2 || (dice1 + dice2) == 3 || (dice1 + dice2) == 12)
                    {
                        total[indexGame] = score.lose;
                        rollLost[indexThrow]++;
                    }
                    //get your "point"
                    else
                    {
                        throw1Score = dice1 + dice2;
                    }
                }
                //anything other than throw 1
                else
                {
                    //check if you "made your point"
                    if((dice1 + dice2) == throw1Score)
                    {
                        total[indexGame] = score.win;
                        if(indexThrow <= 20)
                        {
                            rollWon[indexThrow]++;
                        }
                        else if(indexThrow > 20)
                        {
                            rollWon[21]++;
                        }
                    }
                    //check if you rolled a 7 (lost)
                    else if((dice1 + dice2) == 7)
                    {
                        total[indexGame] = score.lose;
                        if(indexThrow <= 20)
                        {
                            rollLost[indexThrow]++;
                        }
                        else if(indexThrow > 20)
                        {
                            rollLost[21]++;
                        }
                    }
                }
            }
        }
        //ints to add up all the wins and losses in the array of scores
        int timesWon;
        int timesLost;
        //loop for the adding
        for(int winLossCheck = 1; winLossCheck <= 1000000; winLossCheck++)
        {
            if(total[winLossCheck] == score.win)
            {
                timesWon++;
            }
            if(total[winLossCheck] == score.lose)
            {
                timesLost++;
            }
        }
        //print the total times you won/lost
        System.out.println("you won " + timesWon + " times, and you lost " + timesLost + " times");
    }
}

据我所知,一切在逻辑上和语法上都是正确的。

在此先感谢您的帮助!

1 <= 1000000始终为true

您有一个 for 循环,其中条件为1 <= 1000000 此循环不会退出,从而使循环后的所有代码都无法访问。 将条件更改为代码将退出的内容。

例如:

for(int i = 1; i<=10; i++) {
   System.out.println(i);
}

此代码将打印出 1-10 之间的整数。 但是,如果我创建另一个 for 循环,其条件始终为真,例如 0<7。 由于循环不会结束,它之后的所有代码都无法访问。 更改您的 for 循环以使其条件不总是为真,因此程序将继续。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM