【问题标题】:Printing something 3 times in a row, and recording it?连续打印3次并记录下来?
【发布时间】:2015-01-24 21:38:46
【问题描述】:

这会随机打印正面或反面,如果正面连续打印 3 次,那么我会报告。现在我有它,所以如果总共打印了 3 个头,它会报告它。谢谢。

public static void flip(Random r){
    int heads = 0; 
    int totalFlips = 0;
    Random number = new Random();
    int randomNumber;
    do {
        randomNumber = number.nextInt(2)+1;
        if(randomNumber == 1){
            System.out.println("heads");
            heads++;
            totalFlips++;
        }
        else {
            System.out.println("tails");
            totalFlips++;
        }
    } while(heads < 3);

    if(heads == 3){
        System.out.print("3 heads in a row after " +totalFlips + " flips");
    }
}

【问题讨论】:

  • 到底是什么问题?
  • 在 do-while 循环内移动 randomNumber = number.nextInt(2) + 1;。
  • 您生成一个随机数(有时是1,有时是2),从do 行开始,您有这个值...

标签: java if-statement random while-loop


【解决方案1】:

您在循环之外设置随机数,因此它会选择 1 或 2 并且不会改变。我建议您将随机数生成移动到循环中以每次生成一个新数。

它似乎只选择正面的原因是,如果它选择反面,它将进入无限循环。

顺便说一句,使用调试器会更快地发现这个错误。

【讨论】:

  • 我需要它来打印“连续 3 个头”,如果它是一个接一个,而不是总共 3 个头。我该怎么做?
  • @MarinaClaire 检查if (heads == totalFlips) 然后全是人头。
  • 但是如果它正面朝上,那么正面的 3 个数量不等于 4 的总翻转次数。
猜你喜欢
  • 2018-08-30
  • 2012-12-20
  • 2018-12-01
  • 2014-04-29
  • 1970-01-01
  • 2014-08-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多