Как отмечалось во многих комментариях / ответах, у вас определенно есть фигурные скобки.
Плюс, когда пользователь сразу выиграл или проиграл, я предполагаю, что вы хотите остановить выполнение, а не входить в цикл while.Для этого либо окружите цикл блоком else
, либо используйте оператор return;
для завершения программы.
Edit: Также, как указывали другие, ваше условие while(roll != 7 && roll != point
) никогда не выполняется , поскольку на данном этапе бросок все еще составляет equal
до point
.Это можно исправить, либо заново установив значение roll
на значение по умолчанию (например, 0), либо с помощью цикла do-while .
Используя цикл do-while, тело цикла всегда будет выполняться один раз перед проверкой на соответствие условию.
public class CrapsPractice{
public static void main(String[]args){
int d1 = (int) (6 * Math.random() + 1);
int d2 = (int) (6 * Math.random() + 1);
int roll = (d1 + d2);
int point = roll;
if (roll == 7 || roll == 11)
{
System.out.println("You rolled a" + roll);
System.out.println("Congrats! You've immediately won!");
return; //terminate the main function
}
else if (roll == 2 || roll == 3 || roll == 12)
{
System.out.println("you rolled a " + roll);
System.out.println("You lose!");
return; //terminate the main function
}
//do-while loop: execute and then check for condition
//and then if condition holds, execute a second time and so on
do {
int d3 = (int) (6 * Math.random() + 1);
int d4 = (int) (6 * Math.random() + 1);
roll = d3 + d4;
System.out.println("your point is" + point);
} while(roll != 7 && roll != point );
}
}
Что касается примечания, кажется, что вы всегда печатаете одно и то же в цикле while, не так ли?значит печатать roll
вместо point
?