我在下面使用此函数来检查在文本框中输入的值,如果它在try catch标准下有效,则该函数应通过布尔变量返回True。该程序已设置,因此只有在我的所有输入都返回为OK或为真时才会进行最终计算。
我需要正常工作的是try的返回,如果数字无效,则函数应该停止并让用户再次尝试,我正在考虑类似于VB的Exit Sub。我的搜索已经转向使用下面的返回,但这只会导致错误,因为编译器认为我正在尝试返回函数结果。
这个功能还有一点点,但我把它剪掉了,因为它无关紧要;它几乎只是bGarage = true;
和return bGarage;
。
public boolean fnGarageLevel() {//Beginning of Garage Validation Function
int nGarage;
boolean bGarage;
try {//Garage Number Validation Try
nGarage = Integer.parseInt(tfGarage.getText());
if (nGarage != 1 || nGarage != 2 || nGarage != 3 || nGarage != 4) {
JOptionPane.showMessageDialog( null,
"Enter a valid Garage Level, 1, 2, 3 or 4",
"Error",
JOptionPane.ERROR_MESSAGE);
tfGarage.setText("");
tfGarage.grabFocus();
return;
}//End of Error Message
}//End of try
catch (NumberFormatException nfe) {//Beginning of Catch
JOptionPane.showMessageDialog(null,
"Value Entered for Garage is not a Number",
"Error",
JOptionPane.ERROR_MESSAGE);
tfGarage.setText("");
tfGarage.grabFocus();
}//End of Catch for Garage field
bGarage = true;
return bGarage;
}//End of Garage Function
答案 0 :(得分:3)
当try
部分成功完成运行(即没有捕获任何异常)时,控件直接到catch
部分的末尾或(如果存在)进入部分{{ 1}}。在这种情况下,当finally
结束时,控件会跳转到bGarage=true
句子。删除try
语句,没有必要。