Java 查找异常调用方并修改以显示值
假设我有3个文本字段-用于用户输入值(当程序运行时): 当用户输入值时,程序将获取这些值并将其存储为整数(用于以后的操作): 如上代码所示,当用户单击存储按钮时,文本字段中的值将被解析为整数形式的特定变量,如果任何文本字段包含整数以外的输入,将弹出一条消息 问题: 调用异常时,如何清除(设置为“0”)不包含数字的文本字段不能清除包含整数的文本字段。Java 查找异常调用方并修改以显示值,java,oop,japplet,Java,Oop,Japplet,假设我有3个文本字段-用于用户输入值(当程序运行时): 当用户输入值时,程序将获取这些值并将其存储为整数(用于以后的操作): 如上代码所示,当用户单击存储按钮时,文本字段中的值将被解析为整数形式的特定变量,如果任何文本字段包含整数以外的输入,将弹出一条消息 问题: 调用异常时,如何清除(设置为“0”)不包含数字的文本字段不能清除包含整数的文本字段。 当解析为整数时,我可以对每个文本字段使用try和catch,但这意味着代码重复太多(特别是当有许多文本字段时) 看看Character.isDigi
当解析为整数时,我可以对每个文本字段使用try和catch,但这意味着代码重复太多(特别是当有许多文本字段时) 看看Character.isDigit()。您可以创建一个子方法,循环遍历每个字符串并检查它是否是数字。 或者,您可以在字符串上使用正则表达式来检查它是否是数字。
这可以让您摆脱try/catch,并使用if/else处理它们。将每个输入传递给检查该输入的方法。只有一个地方可以尝试,你就知道哪一个失败了。简单的重构,还可以更进一步。
NumberFormatException..
为什么要让用户接受这些?相反,使用SpinnerNumberModel
为他们提供一个JSpinner
,它永远不会出现。我不能说,但这是作业中的一项要求。我知道还有其他方法,有些更有效,但这是一个要求:)分配需要使用异常处理程序。我用一个字符串数组实现了matches(regex)(每个字符串包含特定的TextField数据)。调用异常时,如果在for循环中使用语句,其中每个字符串都与regex进行比较,并且如果不匹配,则关联的TextField文本将设置为“0”。你的回答帮助我在脑海中形成了这个想法,我接受这个回答:)谢谢,这是我的目标。我认为你通过尝试而不是看一个预先写好的答案能学到更多。现在你已经得到了答案,如果你想看一些我如何编写代码的例子,我很乐意将此移到聊天中。那太好了。我不是专家,但我相信有比我的实施更有效的方法。:)不客气。太好了,有机会加入这个房间:
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");
}
}
}