我使用下面的pgm来保存地址簿上的详细信息。我想检查一下是否是int的暴徒。它将在第一次正确执行(如果我在mob字段中输入字母,它将无法保存)。但即使我在暴徒提交的一封信中输入了第二次的话,它也会保存。 mob将存储以前的值。如何在第一次执行后清除暴徒.....
public void savePerson() {
name = jtfName.getText();
name = name.toUpperCase();
jtfName.setText(name);
address = jtfAddress.getText();
try {
landline = Integer.parseInt(""+jtfLandline.getText());
} catch(Exception e) {
}
try {
mob = Integer.parseInt(""+jtfmob.getText());
}catch(Exception e) {
}
email = jtfEmail.getText();
if(name.equals("")) {
JOptionPane.showMessageDialog(null, "Please enter person name.");
} else if(mob == 0) {
JOptionPane.showMessageDialog(null, "Please enter Mobile Number.");
} else {
//create a PersonInfo object and pass it to PersonDAO to save it
PersonInfo person = new PersonInfo(name, address, landline, mob , email);
pDAO.savePerson(person);
JOptionPane.showMessageDialog(null, "Person Saved");
clear();
}
}
答案 0 :(得分:2)
在执行下一次使用方法jtfmob.setText("")
之前,请编写完整的逻辑。
答案 1 :(得分:2)
试试这个,
第一次迭代结束后,通过设置如下
重置文本字段jtfmob.setText("");
要单独获取数字输入,请尝试以下代码
jtfmob = new JFormattedTextField(NumberFormat.getInstance());
答案 2 :(得分:1)
这是非常明显的情况。 当您第一次解析jtfmob文本字段时,它将查找其中的值。如果该值不是整数,则根本不会对其进行解析,您将获得空值。但如果该值为整数,则可以毫无问题地进行。
mob = Integer.parseInt(""+jtfmob.getText());
mob将包含整数数据类型中的已解析值。但是下次当你把字母放在文本字段中时,它不会被解析,从而导致异常(你正在成功捕获)。程序的控制将被转移到catch块而不更新Integer类型变量 mob的值即可。所以 mob 将包含OLD值(因为异常不会更新值),并且在这种情况下也是如此。
要解决此问题,请在catch块中显示一些消息以输入正确的值或自行寻找其他方法
答案 3 :(得分:0)
在构造函数中使用以下内容。
jTextField1.setText("");
每次单击按钮之前,它都会重置您的值。