Вы в основном там.
Я изменил несколько вещей:
- Вам не нужно использовать выражение if, которое является избыточным с вашимсменить заявление.
Когда вы говорите
switch(number)
case 1:
Технически вы спрашиваете
if(number == 1)
Поэтому нам не нужно проверять число внутри оператора switch.
- Упрощенная проверка логического значения в операторе 'if'
При проверке логической переменной в операторе if вам не нужно произносить
if(boolean == true)
Вы можете просто сказать
if(boolean)
По умолчанию это проверяет, является ли значение истинным.
Что касается логики в вашем коде, я имею толькопоказаны детали, имеющие отношение к вашему вопросу.Вы хотите проверить состояние текущего поля в начале любого оператора.В «case: 1» первым делом я проверил, действительно ли box1 истинно.Если это так, я вызвал метод reset и выгнал нас из оператора switch.
Если box1 имеет значение false (что означает, что мы не использовали его ранее), тогда мы можем фактически запустить нормальную логику, а затем установить для box1 значение true.Я прокомментировал, куда пойдет некоторая ваша логика, поскольку я не совсем уверен, что вы пытаетесь с этим делать.
int boxesUsedSoFar = 0;
boolean gameIsDone = false;
while (gameIsDone != true) {
int number = (int) ((Math.random() * 6) + 1);
boxesUsedSoFar++;
System.out.println("Current Box Number : " + number);
switch (number) {
case 1:
if (box1) {
//box1 is false by default, if it was true here, it means we have a duplicate
restart();
break;
}
/*
Your code to call a combo method goes here, repeat for each case.
*/
box1 = true;
break;
case 2:
if (box2) {
restart();
break;
}
box2 = true;
break;
case 3:
if (box3) {
restart();
break;
}
box3 = true;
break;
case 4:
if (box4) {
restart();
break;
}
box4 = true;
break;
case 5:
if (box5) {
restart();
break;
}
box5 = true;
break;
default:
if (box6) {
restart();
break;
}
box6 = true;
break;
}
System.out.println("Boxes used so far : " + boxesUsedSoFar);
}
}
Если что-то здесь неясно, пожалуйста, дайте мне знать.