#java
#java
Вопрос:
Задача состоит в том, чтобы подбрасывать монету до тех пор, пока не будут видны четыре орла подряд, и отображать все результаты, ведущие к этому. Я продолжаю получать последнее сообщение об ошибке, которое я ввел на всякий случай, если оно провалилось. Я понятия не имею, что я напутал, и мне было интересно, смог ли кто-нибудь помочь.
class Main {
public static void main(String[] args) {
int h = 2;
int t = 1;
int count = 0;
int resu<
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");
}
}
}
Комментарии:
1.
Math.Random() * 2
возвращает число с плавающей запятой от 0 до 1.99999 …, поэтому приведение его к int сделает его 0 или 1. Это никогда не станет 2.
Ответ №1:
(int)Math.random() * 2
то же самое, что
((int)Math.random()) * 2
Учитывая, что Math.random()
это возвращает число не менее нуля, но меньше единицы, ваше выражение всегда будет равно нулю.
Заключите в круглые скобки:
(int) (Math.random() * 2)
Но тогда также посмотрите на значения result
в ваших условных обозначениях: вы никогда не сгенерируете 2.
Ответ №2:
Вам нужно добавить 1, чтобы получить возможные значения, равные одному или двум:
result = (int) (Math.random() * 2 1);
Ответ №3:
Вы можете использовать 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");
}
}
Ответ №4:
В результате Math.random() имеет тип от 0 до 1, приведение его к int приведет к удалению цифр после десятичной точки, и вы всегда будете иметь ноль в качестве ответа. Приведенный ниже код поможет вам сгенерировать случайное число между min и max.
// 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, поскольку он не округляется, а вводится непосредственно. Следовательно, это может дать вам случайное число для любого диапазона.