Таким образом, программы успешно выполняются, за исключением того, что когда условие завершения цикла while встречается, оно отправляет последнее диалоговое окно ввода JOptionPane перед отображением диалогового окна сообщения для завершения программы, где входной диалог ничего не достигнет.JOptionPane внутри цикла while, показывающего после цикла while, завершается
import javax.swing.JOptionPane;
import java.util.Arrays;
public class DiceGame2{
public static void main(String[] args){
Dice[] dDice = new Dice[5];
String[] sDice = new String[5];
String finalSDice, sRoll;
int diceTotal=1, oldTotal=0, iRoll, numberOfRolls=0;
for(int i=0; i<5; i++){
dDice[i]= new Dice();
}
for(int i=0; i<5; i++){
dDice[i].roll();
}
while(diceTotal>=oldTotal){
for(int i=0; i<5; i++){
sDice[i]=Integer.toString(dDice[i].value());
}
finalSDice=Arrays.toString(sDice);
oldTotal=diceTotal;
diceTotal=0;
for(int i=0; i<5; i++){
diceTotal+=dDice[i].value();
}
sRoll=JOptionPane.showInputDialog(null,"Your 5 dice contain the numbers:\n"+finalSDice+"\nThese dice have a total score of "+diceTotal+".\nEnter which dice you would like to reroll to attempt to increase your score:");
iRoll=Integer.parseInt(sRoll);
dDice[iRoll-1].roll();
numberOfRolls++;
}
finalSDice=Arrays.toString(sDice);
JOptionPane.showMessageDialog(null, "Your 5 dice contain the numbers:\n"+finalSDice+"\nThese dice have a total score of "+diceTotal+".\nYou've failed to increase your total score.\n You made "+numberOfRolls+" successful rolls.");
}
}
Как это исправить?
Не используйте JOptionPane в цикле :). Вы создаете кадр в цикле, это не хорошо, потому что вы не можете –
Я не вижу, где ваш код это делает, можете ли вы показать нам ввод и вывод? – DreadHeadedDeveloper
@DreadHeadedDeveloper Есть только два диалога JOptionPane, а программа - чрезвычайно простой счетчик костей. – Scy