Java修复文本字段上字符串类型的错误?
我制作了一个小型GUI sum程序。该程序在空文本字段上运行良好,但问题是当用户在文本字段中输入任何字符串时,就会出现错误Java修复文本字段上字符串类型的错误?,java,Java,我制作了一个小型GUI sum程序。该程序在空文本字段上运行良好,但问题是当用户在文本字段中输入任何字符串时,就会出现错误 Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: "a34dsfsdf" 如何修复字符串类型或除数字以外的任何字符的错误 这是我的密码 private JTextField textfield1; private JTextField text
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可以引发两个异常:
-如果字符串为nullNullPointerException
-如果字符串不包含可解析双精度NumberFormatException
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可以引发两个异常:
-如果字符串为nullNullPointerException
-如果字符串不包含可解析双精度NumberFormatException
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可以引发两个异常:
-如果字符串为nullNullPointerException
-如果字符串不包含可解析双精度NumberFormatException
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可以引发两个异常:
-如果字符串为nullNullPointerException
-如果字符串不包含可解析双精度NumberFormatException
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感谢我也通过异常处理完成了它