假設我有3周的TextField - 用於供用戶輸入值代入(在程序運行時):查找異常呼叫者和修改,以顯示一個值
TextField input1 = new JTextField("00");
TextField input2 = new JTextField("00");
TextField input3 = new JTextField("00");
當用戶輸入值,程序則需要(以後用於操作)這些值並將它們存儲爲整數:
public void actionPerformed(ActionEvent e) {
String temp1 = input1.getText();
String temp2 = input.getText();
String temp3 = input3.getText();
int num1=0, num2=0, num3=0;
if(e.getSource() == storeButton){
try{
num1 = Integer.parseInt(tem1);
num2 = Integer.parseInt(temp2);
num3 = Integer.parseInt(temp3);
}
catch(NumberFormatException ex){
JOptionPane.showMessageDialog(null, "Input must be an integer from 0 to 50");
}
}
}
作爲上述代碼所示,當用戶點擊storeButton在TextField的值被解析成特定變量爲整數,並且如果任何TextFields除包含整數外還包含一個輸入,則會彈出一條消息。
問題:
當異常被調用時,如何清除(設置爲「0」)的文本字段不包含數字? 不能清除包含整數的TextField。 我可以通過使用嘗試和捕獲爲每個TextField解析爲整數,但這將意味着代碼(尤其是當有很多TextFields)時重複太多。
將每個輸入傳遞給檢查輸入的方法。嘗試/抓住一個地方,你知道哪一個失敗了。簡單的重構,可以走得更遠。 –
*'NumberFormatException..' *爲什麼使用戶接受這個?而是使用'SpinnerNumberModel'爲他們提供'JSpinner',並且它永遠不會出現。 –
我不能說,但它是作業中的一項要求。我知道還有其他方法,其中一些更高效,但它是一項要求:) – NewToCoding