Java:计算随机变量的输出?

时间:2016-09-14 22:23:36

标签: java

在滚动模具后的这个程序中" x"次数(userInput)我想计算每个数字出现的次数。

我尝试制作一个else,如果它会在每个随机数出现时添加一个,但它似乎只能使用最后一个随机数,也许它是因为if不在while循环中?我不确定如何在while循环中添加ifss和ifs ...也许我过度复杂了

        System.out.println("Enter the number of times a 6 sided die " +
            "should\nbe rolled");
    Random r = new Random();
    int numberOfRolls = userInput.nextInt();
    int randomRoll;
    int timesRolled = 0;

    if (numberOfRolls <= 0) {
        System.out.println("Nope, that's below zero");
        System.exit(0);
    }
    do {
        timesRolled++;
        randomRoll = r.nextInt(6) + 1;
        System.out.println(randomRoll + " was rolled");
    }
    while (numberOfRolls > timesRolled);

    int numberOne = 0;
    int numberTwo = 0;
    int numberThree = 0;
    int numberFour = 0;
    int numberFive = 0;
    int numberSix = 0;

    if (randomRoll == 1)
    {
       numberOne ++;
    }
    else if (randomRoll == 2)
    {
        numberTwo ++;
    }
    else if (randomRoll == 3)
    {
        numberThree ++;
    }
    else if (randomRoll == 4)
    {
        numberFour ++;
    }
    else if (randomRoll == 5)
    {
        numberFive ++;
    }
    else if (randomRoll == 6)
    {
        numberSix ++;
    }
    System.out.println(" One: " +numberOne+ "\n Two: " +numberTwo+ "\n Three: " +numberThree+
            "\n Four: " +numberFour+ "\n Five: " +numberFive+ "\n Six: " +numberSix);
}

输出为:

> Enter the number of times a 6 sided die should
be rolled
3
2 was rolled
5 was rolled
1 was rolled

 One: 1
 Two: 0    
 Three: 0
 Four: 0
 Five: 0
 Six: 0

2 个答案:

答案 0 :(得分:1)

你需要在你的do / while循环中实现滚动的大块if / else块。你只获得1分的原因是当do / while退出时,它只能检查 MaterialDialog dialog = new MaterialDialog.Builder(this) .title(R.string.googleWifi) .customView(R.layout.dialog_customview, true) .positiveText(R.string.connect) .negativeText(android.R.string.cancel) .onPositive(new MaterialDialog.SingleButtonCallback() { @Override public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) { showToast("Password: " + passwordInput.getText().toString()); } }).build(); 的最新值。所有其他值都被最后一个值覆盖,数据丢失。

将其重新排序为:

randomRoll

编辑:我非常喜欢Aelexe建议将其用作开关,所以这就是看起来像:

int numberOne = 0;
int numberTwo = 0;
int numberThree = 0;
int numberFour = 0;
int numberFive = 0;
int numberSix = 0;
do {
    timesRolled++;
    randomRoll = r.nextInt(6) + 1;
    System.out.println(randomRoll + " was rolled");
    if (randomRoll == 1)
    {
       numberOne ++;
    }
    else if (randomRoll == 2)
    {
       numberTwo ++;
    }
    else if (randomRoll == 3)
    {
       numberThree ++;
    }
    else if (randomRoll == 4)
    {
       numberFour ++;
    }
    else if (randomRoll == 5)
    {
       numberFive ++;
    }
    else if (randomRoll == 6)
    {
       numberSix ++;
    }
}
while (numberOfRolls > timesRolled);

编辑2:因为我也喜欢cricket_007的建议,这就是看起来的样子:

//note that I'm shortening things a bit to save a little typing.  
//I don't have a Java compiler on the computer I'm at but I think I can get this right from memory.
int one, two, three, four, five, six;
one = two = three = four = five = six = 0;
do
{
   timesRolled++;
   randomRoll = r.nextInt(6) + 1;
   switch(randomRoll)
   {
   case 1:
      ++one; break;
   case 2:
      ++two; break;
   case 3:
      ++three; break;
   case 4:
      ++four; break;
   case 5:
      ++five; break;
   case 6:
      ++six;
   }
} while(numberOfRolls > timesRolled);

答案 1 :(得分:1)

这就是你的代码应该是这样的:

    int randomRoll = 6;
    int  timesRolled = 0;

    int numberOfRolls = 8;

    int numberOne = 0;
    int numberTwo = 0;
    int numberThree = 0;
    int numberFour = 0;
    int numberFive = 0;
    int numberSix = 0;

    Random r = new Random();


    while (numberOfRolls > timesRolled ){
        timesRolled++;
        randomRoll = r.nextInt(6) + 1;
        System.out.println(randomRoll + " was rolled");
        if (randomRoll == 1)
        {
            numberOne ++;
        }
        else if (randomRoll == 2)
        {
            numberTwo ++;
        }
        else if (randomRoll == 3)
        {
            numberThree ++;
        }
        else if (randomRoll == 4)
        {
            numberFour ++;
        }
        else if (randomRoll == 5)
        {
            numberFive ++;
        }
        else if (randomRoll == 6)
        {
            numberSix ++;
        }
        System.out.println(" One: " +numberOne+ "\n Two: " +numberTwo+ "\n Three: " +numberThree+
                "\n Four: " +numberFour+ "\n Five: " +numberFive+ "\n Six: " +numberSix);
    }