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 语句中。