Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 查找异常调用方并修改以显示值_Java_Oop_Japplet - Fatal编程技术网

Java 查找异常调用方并修改以显示值

Java 查找异常调用方并修改以显示值,java,oop,japplet,Java,Oop,Japplet,假设我有3个文本字段-用于用户输入值(当程序运行时): 当用户输入值时,程序将获取这些值并将其存储为整数(用于以后的操作): 如上代码所示,当用户单击存储按钮时,文本字段中的值将被解析为整数形式的特定变量,如果任何文本字段包含整数以外的输入,将弹出一条消息 问题: 调用异常时,如何清除(设置为“0”)不包含数字的文本字段不能清除包含整数的文本字段。 当解析为整数时,我可以对每个文本字段使用try和catch,但这意味着代码重复太多(特别是当有许多文本字段时) 看看Character.isDigi

假设我有3个文本字段-用于用户输入值(当程序运行时):

当用户输入值时,程序将获取这些值并将其存储为整数(用于以后的操作):

如上代码所示,当用户单击存储按钮时,文本字段中的值将被解析为整数形式的特定变量,如果任何文本字段包含整数以外的输入,将弹出一条消息

问题:

调用异常时,如何清除(设置为“0”)不包含数字的文本字段不能清除包含整数的文本字段。
当解析为整数时,我可以对每个文本字段使用trycatch,但这意味着代码重复太多(特别是当有许多文本字段时)

看看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");
      }
  }
}