连续4次翻转硬币并在硬币落地时停止

  • 本文关键字:硬币 4次 翻转 连续 java
  • 更新时间 :
  • 英文 :


任务是翻转一枚硬币,直到看到一排四个头,并显示所有结果。我不断收到我输入的最后一条错误信息,以防它失败。我不知道自己搞砸了什么,不知道是否有人能帮忙。

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

int h = 2;
int t = 1;

int count = 0;
int result;
while (count<=4)
{

result = (int)Math.random()*2;
if (result == 2)
{
count++;
System.out.print("H ");
}
else if (result == 1)
{
count=0;
System.out.print("T ");
}
else
System.out.println("error");
}
}
}
(int)Math.random() * 2

与相同

((int)Math.random()) * 2

假设Math.random()返回一个至少为零但小于一的数字,则表达式将始终为零。

括号内:

(int) (Math.random() * 2)

但是,还要看看条件句中result的值:你永远不会生成2。

您需要加1才能得到一个或两个可能的值:

result = (int) (Math.random() * 2 + 1);

您可以使用Random类和布尔

Random random = new Random();
int count = 0;
while (count < 4) {
if (random.nextBoolean()) {
System.out.print("H");
count++;
} else {
count = 0;
System.out.print("T");
}
}

由于Math.random((的结果介于0和1之间,将其类型转换为int将删除小数点后的数字,并且始终将零作为答案。以下代码将帮助您生成最小值和最大值之间的随机数

// define the range 
int max = 2; 
int min = 1; 
int range = max - min + 1; 
int rand = (int)(Math.random() * range) + min;

为了解释这是如何工作的,你可以把0的最小可能值和0.99的最大可能值都乘以任何范围,比如说20,答案仍然在1到20.8之间,它变成了20,因为它不是四舍五入,而是直接类型铸造。因此,这可以为任何范围提供一个随机数。

最新更新