Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.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 - Fatal编程技术网

Java修复文本字段上字符串类型的错误?

Java修复文本字段上字符串类型的错误?,java,Java,我制作了一个小型GUI sum程序。该程序在空文本字段上运行良好,但问题是当用户在文本字段中输入任何字符串时,就会出现错误 Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: "a34dsfsdf" 如何修复字符串类型或除数字以外的任何字符的错误 这是我的密码 private JTextField textfield1; private JTextField text

我制作了一个小型GUI sum程序。该程序在空文本字段上运行良好,但问题是当用户在文本字段中输入任何字符串时,就会出现错误

Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: "a34dsfsdf"
如何修复字符串类型或除数字以外的任何字符的错误

这是我的密码

private JTextField textfield1;
private JTextField textfield3;
private JTextField textfield4;
private JButton button1;

public ChildClass(){
    super("Frame");
    button1 = new JButton();
    button1.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                double number1,baseE,sum;
                String text1=textfield1.getText();
                String text3=textfield4.getText();

                if(text1.isEmpty() && text3.isEmpty()){
                    JOptionPane.showMessageDialog(null, "Enter Values In TextField", "Invalid TextFields", JOptionPane.ERROR_MESSAGE);
                    return;
                }       
                else if(!text3.isEmpty() && !text1.isEmpty()){
                    number1=Double.parseDouble(text1);
                    baseE=Double.parseDouble(text3);

                    result =number1+basE;
                    textfield3.setText(""+result);
                }
            }
    });

错误是因为您试图将字符串解析为双精度

这两个电话:

number1=Double.parseDouble(text1);
baseE=Double.parseDouble(text3);
如果你看:

parseDouble可以引发两个异常:

  • NullPointerException
    -如果字符串为null
  • NumberFormatException
    -如果字符串不包含可解析双精度
您应该将这些调用放在try-catch块中,捕获异常并提示用户需要输入有效号码

像这样的方法应该会奏效:

try{
    number1=Double.parseDouble(text1);
    baseE=Double.parseDouble(text3);


    result =number1+basE;
    textfield3.setText(""+result);

}catch(NumberFormatException e){
    JOptionPane.showMessageDialog(null, "Enter Valid Numbers In TextField", "Invalid TextFields", JOptionPane.ERROR_MESSAGE);
}

错误是因为您试图将字符串解析为双精度

这两个电话:

number1=Double.parseDouble(text1);
baseE=Double.parseDouble(text3);
如果你看:

parseDouble可以引发两个异常:

  • NullPointerException
    -如果字符串为null
  • NumberFormatException
    -如果字符串不包含可解析双精度
您应该将这些调用放在try-catch块中,捕获异常并提示用户需要输入有效号码

像这样的方法应该会奏效:

try{
    number1=Double.parseDouble(text1);
    baseE=Double.parseDouble(text3);


    result =number1+basE;
    textfield3.setText(""+result);

}catch(NumberFormatException e){
    JOptionPane.showMessageDialog(null, "Enter Valid Numbers In TextField", "Invalid TextFields", JOptionPane.ERROR_MESSAGE);
}

错误是因为您试图将字符串解析为双精度

这两个电话:

number1=Double.parseDouble(text1);
baseE=Double.parseDouble(text3);
如果你看:

parseDouble可以引发两个异常:

  • NullPointerException
    -如果字符串为null
  • NumberFormatException
    -如果字符串不包含可解析双精度
您应该将这些调用放在try-catch块中,捕获异常并提示用户需要输入有效号码

像这样的方法应该会奏效:

try{
    number1=Double.parseDouble(text1);
    baseE=Double.parseDouble(text3);


    result =number1+basE;
    textfield3.setText(""+result);

}catch(NumberFormatException e){
    JOptionPane.showMessageDialog(null, "Enter Valid Numbers In TextField", "Invalid TextFields", JOptionPane.ERROR_MESSAGE);
}

错误是因为您试图将字符串解析为双精度

这两个电话:

number1=Double.parseDouble(text1);
baseE=Double.parseDouble(text3);
如果你看:

parseDouble可以引发两个异常:

  • NullPointerException
    -如果字符串为null
  • NumberFormatException
    -如果字符串不包含可解析双精度
您应该将这些调用放在try-catch块中,捕获异常并提示用户需要输入有效号码

像这样的方法应该会奏效:

try{
    number1=Double.parseDouble(text1);
    baseE=Double.parseDouble(text3);


    result =number1+basE;
    textfield3.setText(""+result);

}catch(NumberFormatException e){
    JOptionPane.showMessageDialog(null, "Enter Valid Numbers In TextField", "Invalid TextFields", JOptionPane.ERROR_MESSAGE);
}

我建议您在try-catch块中捕获异常

double number1,baseE,sum;
String text1=textfield1.getText();
String text3=textfield4.getText();

try
{
   number1=Double.parseDouble(text1);
   baseE=Double.parseDouble(text3);
   result=number1+basE;
   textfield3.setText(""+result);
}    
catch (Exception e)
{
  JOptionPane.showMessageDialog(null, "Enter Values In TextField", "Invalid TextFields", JOptionPane.ERROR_MESSAGE);
  return;
}

然后还可以避免测试空文本字段。空字符串也会引发异常。

我建议您在try-catch块中捕获异常

double number1,baseE,sum;
String text1=textfield1.getText();
String text3=textfield4.getText();

try
{
   number1=Double.parseDouble(text1);
   baseE=Double.parseDouble(text3);
   result=number1+basE;
   textfield3.setText(""+result);
}    
catch (Exception e)
{
  JOptionPane.showMessageDialog(null, "Enter Values In TextField", "Invalid TextFields", JOptionPane.ERROR_MESSAGE);
  return;
}

然后还可以避免测试空文本字段。空字符串也会引发异常。

我建议您在try-catch块中捕获异常

double number1,baseE,sum;
String text1=textfield1.getText();
String text3=textfield4.getText();

try
{
   number1=Double.parseDouble(text1);
   baseE=Double.parseDouble(text3);
   result=number1+basE;
   textfield3.setText(""+result);
}    
catch (Exception e)
{
  JOptionPane.showMessageDialog(null, "Enter Values In TextField", "Invalid TextFields", JOptionPane.ERROR_MESSAGE);
  return;
}

然后还可以避免测试空文本字段。空字符串也会引发异常。

我建议您在try-catch块中捕获异常

double number1,baseE,sum;
String text1=textfield1.getText();
String text3=textfield4.getText();

try
{
   number1=Double.parseDouble(text1);
   baseE=Double.parseDouble(text3);
   result=number1+basE;
   textfield3.setText(""+result);
}    
catch (Exception e)
{
  JOptionPane.showMessageDialog(null, "Enter Values In TextField", "Invalid TextFields", JOptionPane.ERROR_MESSAGE);
  return;
}


然后还可以避免测试空文本字段。空字符串也会引发异常。

a34dsfsdf
不是一个数字,因此很明显,您会得到一个异常将
DocumentFilter
添加到假定存储数字的文本字段中。请添加完整的堆栈跟踪。问题是您的
number1=Double.parseDouble(text1)
因为您的文本不是数字。解决方案由@Blip提供。或者你需要检查之前,如果只有数字在您的字符串我不知道在哪一行你得到错误。但是如果它是为:
number1=Double.parseDouble(text1)
,或
baseE=Double.parseDouble(text3)字符串
转换为
双精度
a34dsfsdf
不是一个数字,因此很明显,您会得到一个例外将
文档过滤器
添加到假定存储数字的文本字段中。请添加完整的堆栈跟踪。问题是
number1=double.parseDouble(text1)
因为您的文本不是数字。解决方案由@Blip提供。或者你需要检查之前,如果只有数字在您的字符串我不知道在哪一行你得到错误。但是如果它是为:
number1=Double.parseDouble(text1)
,或
baseE=Double.parseDouble(text3)字符串
转换为
双精度
a34dsfsdf
不是一个数字,因此很明显,您会得到一个例外将
文档过滤器
添加到假定存储数字的文本字段中。请添加完整的堆栈跟踪。问题是
number1=double.parseDouble(text1)
因为您的文本不是数字。解决方案由@Blip提供。或者你需要检查之前,如果只有数字在您的字符串我不知道在哪一行你得到错误。但是如果它是为:
number1=Double.parseDouble(text1)
,或
baseE=Double.parseDouble(text3)字符串
转换为
双精度
a34dsfsdf
不是一个数字,因此很明显,您会得到一个例外将
文档过滤器
添加到假定存储数字的文本字段中。请添加完整的堆栈跟踪。问题是
number1=double.parseDouble(text1)
因为您的文本不是数字。解决方案由@Blip提供。或者你需要检查之前,如果只有数字在您的字符串我不知道在哪一行你得到错误。但是如果它是为:
number1=Double.parseDouble(text1)
,或
baseE=Double.parseDouble(text3)字符串
转换为
double
NumberFormatException
NullPointerException
是一个运行时异常,无需将其转换为
try catch
块。@Peter Szeto感谢我也通过异常处理完成了它