任务是翻转一枚硬币,直到看到一排四个头,并显示所有结果。我不断收到我输入的最后一条错误信息,以防它失败。我不知道自己搞砸了什么,不知道是否有人能帮忙。
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,因为它不是四舍五入,而是直接类型铸造。因此,这可以为任何范围提供一个随机数。