【发布时间】:2015-10-19 20:55:07
【问题描述】:
假设我有 3 个 TextFields - 用于用户输入值(当程序运行时):
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 时,TextFields 中的值会被解析为整数形式的特定变量,如果任何 TextFields 包含除整数之外的输入,则会显示一条消息会弹出来。
问题:
调用异常时,如何清除(设置为“0”)不包含数字的TextField? 不能清除包含整数的文本字段。 当解析为整数时,我可以通过对每个 TextField 使用 try 和 catch 来做到这一点,但这意味着代码重复过多(尤其是当有很多 TextField 时)。
【问题讨论】:
-
将每个输入传递给检查该输入的方法。 try/catch 的一个地方,你知道哪个失败了。重构简单,可以走得更远。
-
NumberFormatException..为什么要让用户接受这个?而是使用SpinnerNumberModel为他们提供JSpinner,它永远不会出现.. -
我不能说,但这是作业中的要求。我知道还有其他方法,其中一些更有效,但这是一个要求:)