的数量对话框检查我工作的一种纸牌游戏与玩家1-4。当我开始一款新游戏时,它会实例化一个类DialogCreator
,要求你输入你想要的玩家人数。下面是DialogCreator代码:Java Swing应用程序,在范围
private class DialogCreator {
/**
* Creates a dialog for the input of how many players you want in the game.
* Takes an integer between 1 and 4.
* @param msg
* @return
*/
int createIntDialog(String msg) {
String inValue = null;
String error_msg = "";
int v = 0;
while ((inValue = JOptionPane
.showInputDialog(msg + error_msg + ":")) != null) {
error_msg = "";
int inVal = Integer.parseInt(inValue);
try {
if(inVal >= 1 && inVal <= 4)
v = inVal;
break;
} catch (NumberFormatException nfe) {
error_msg = "(Entered values can only be integers between 1 and 4)";
}
}
return v;
}
}
我认为这个代码将尝试v = inVal
只有1 <= inVal
>= 4
设置,如果inVal
是< 1> 4它会去追赶,并给我的错误信息。这不工作,我得到一个IndexOutOfBoundsException
如果我输入一个数字,是不是1〜4。工作正常检查,如果我进入一个String
不能被解析为int
。有人能告诉我我在这里做错了吗?
只有当您不输入整数时才会更改错误消息,如果'inVal'为<1 or > 4.您必须在if = 1 && inVal <= 4)之后添加else块'阻止为了做到这一点。此外,'int inVal = Integer.parseInt(inValue);'应该在try块内,否则catch块不起作用。我不知道为什么你得到一个'IndexOutOfBoundsException',改变你的代码后,一切都适用于我。 –
您是否有特别的理由将异常处理用作流量控制?这其实不是什么好风格。我会用一些正则表达式来检查输入,至少使'TryParse'成为会导致catch块中异常的强制转换。 – Kai
这是我熟悉的唯一方法,我急于完成这个项目。这就是为什么我没有寻找更好的方法来处理异常。感谢您指出它。我将研究未来项目的其他方法。 –