boolean gotGoodGenInput = false;
while (!gotGoodGenInput)
{
gotGoodGenInput = true;
String inputGen = JOptionPane.showInputDialog
(
"Enter your Generation \n" +
"It must be a number from 0 to 25"
);
if(inputGen != null)
{
if (inputGen.isEmpty() || !inputGen.matches("[0-9]*"))
{
JOptionPane.showMessageDialog
(
null,
"Please input a number from 0 to 25",
"Error",
JOptionPane.ERROR_MESSAGE
);
gotGoodGenInput = false;
}
int GenNumber = Integer.parseInt(inputGen);
if (GenNumber < 0 || GenNumber > 25)
{
JOptionPane.showMessageDialog
(
null,
"Your number can't be less than 0 or greater than 25",
"Error",
JOptionPane.ERROR_MESSAGE
);
gotGoodGenInput = false;
}
}
else
{
System.exit(0);
}
}
こんにちは、私が抱えている問題は、ユーザーが「a」(例として) を入力すると、「0 から 25 までの数字を入力してください」というエラーが表示されることです。
if (inputGen.isEmpty() || !inputGen.matches("[0-9]*"))
gotGoodGenInput = false; になったときにループを再開することになっています。
しかし、intを解析しようとする次の部分に進み続けますが、「a」はintではないため、もちろんエラーになります
だから私の問題は、 gotGoodGenInput = false; に達したときに最初からやり直さないのはなぜですか。最初の if ステートメントで。