线程“AWT-EventQueue-0”java.lang.NumberFormatException中的异常:用于输入字符串:“”
我已经做了一个程序来计算正方形、圆形和矩形的面积 //从用户处获取输入线程“AWT-EventQueue-0”java.lang.NumberFormatException中的异常:用于输入字符串:“”,java,Java,我已经做了一个程序来计算正方形、圆形和矩形的面积 //从用户处获取输入 String A=TF1.getText(); String B=TF2.getText(); String C=TF3.getText(); String D=TF4.getText(); //将其转换为整数 W=Integer.parseInt(A); X=Integer.parseInt(B); Y=Integer.parseInt(C); Z=Integer.parseInt(D); //使用这些值计算面积
String A=TF1.getText();
String B=TF2.getText();
String C=TF3.getText();
String D=TF4.getText();
//将其转换为整数
W=Integer.parseInt(A);
X=Integer.parseInt(B);
Y=Integer.parseInt(C);
Z=Integer.parseInt(D);
//使用这些值计算面积
A1=W*W;
A2=X*Y;
A3=(3*Z*Z);
//并根据所选选项显示
if (RB1.isSelected())
TF5.setText(" "+A1);
else if(RB3.isSelected())
TF5.setText(" "+A2);
else
TF5.setText(" "+A3);
//此外,根据用户选择的选项,我还使一些文本字段不可见。您正在尝试将空字符串转换为数字。如果用户没有在textfield中输入任何内容,代码将从textfield中检索空字符串,然后尝试使用Integer.parseInt对其进行转换 首先需要检查所有字段是否为非空;或者,对整个过程进行尝试/捕获,如果捕获到NumberFormatException,则中止计算
当您捕获到异常时,可以向用户发出输入无效的警告。1命名时遵循编码约定,以便易于理解代码。 例如,字符串firstNumberString=firstTextBox.getText;读起来比字符串A=TF1.getText要好得多 2您正在从每个文本框中检索文本并尝试对其进行解析。但是如果文本框不包含任何内容,Integer.parseInt方法将抛出一个NumberFormatException,这在您的案例中正在发生 解决方案:验证文本框中的文本
private Boolean validateText(String str)
{
if ( str == null || str.equals("") ) {
return false;
}
char[] chars = str.toCharArray();
boolean ok = true;
for ( int i = 0; i < chars.length; i++ ) {
try {
Integer.parseInt( String.valueOf( chars[i] ) );
} catch ( NumberFormatException exc ) {
ok = false;
break;
}
}
return ok;
}
拇指规则:在解析之前,检查null和empty。如果用户没有输入任何内容或字符串,则会出现数字格式异常。
private Boolean validateText(String str)
{
if ( str == null || str.equals("") ) {
return false;
}
char[] chars = str.toCharArray();
boolean ok = true;
for ( int i = 0; i < chars.length; i++ ) {
try {
Integer.parseInt( String.valueOf( chars[i] ) );
} catch ( NumberFormatException exc ) {
ok = false;
break;
}
}
return ok;
}