我制作了一个程序来计算方形圆和矩形
的面积int W=0;
int X=0;
int Y=0;
int Z=0;
int A1=0;
int A2=0;
int A3=0;
//从用户
获取输入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);
//我也根据用户选择的选项使一些文本字段不可见
答案 0 :(得分:1)
您正在尝试将空string
转换为数字。如果用户未在textfield
中输入任何内容,您的代码将从文本字段中检索空字符串,然后尝试使用Integer.parseInt
进行转换。
您需要先检查所有字段是否为空;或者,在整个事物周围加try/catch
,如果你抓到NumberFormatException
,就中止计算。
当您抓住exception
时,您可以向用户发出输入无效的警告。
答案 1 :(得分:1)
1)在命名时遵循编码约定,以便易于理解代码。
例如,String firstNumberString = firstTextBox.getText();
看起来要好得多,而不是String A=TF1.getText();
2)您正在从每个文本框中检索文本并尝试解析它。但是,如果文本框中不包含任何内容,则Integer.parseInt()
方法会抛出NumberFormatException
,这种情况正在发生。
解决方案:验证TextBox中的文本。
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;
}