的數量對話框檢查我工作的一種紙牌遊戲與玩家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
這是我熟悉的唯一方法,我急於完成這個項目。這就是爲什麼我沒有尋找更好的方法來處理異常。感謝您指出它。我將研究未來項目的其他方法。 –