我的程序有问题。用户可以在GUI中输入成绩,但成绩必须在9到12年级。 这是我到目前为止所尝试的,但似乎没有用。
int grade = Integer.parseInt(inputGrade.getText());
else
{
try
{
for (int i = 9; i < 13; i++)
{
if (grade == i)
{
grade = Integer.parseInt(inputGrade.getText());
}
}
}
catch(NumberFormatException e)
{
for (int x = -1; x < 9; x++)
{
if (grade == x)
{
outputHint.setText("Grade not valid");
}
}
}
没有提示输出。
有什么帮助吗?提前致谢!!
你尝试过这样的事吗?
try
{
grade = Integer.parseInt(inputGrade.getText());
if (grade >= 9 && grade <= 12) {
// Valid
outputHint.setText("Grade valid");
} else {
// Not valid
outputHint.setText("Grade not valid");
}
}
catch(NumberFormatException e)
{
outputHint.setText("Grade not valid");
}
你还有在比较它之前比较grade
变量的问题。并且你的for
循环没有用,因为一旦它是一个整数你就可以对你的变量做一个条件。
最后,只有当throw
是非整数时,你的例外才是inputGrade.getText()
。所以它没有考虑你的if条件,所以你甚至不能在那之后把坏数字放在那里。
这是一个简单的方法。
try{
int grade = Integer.parseInt(inputGrade.getText());
if(grade >= 9 && grade <= 12){
// this is a good grade
outputHint.setText("Grade valid");
} else {
// sorry, this is not a good grade.
outputHint.setText("Grade not valid");
}
} catch(NumberFormatException e) {
// sorry but you need to enter a number !!
}
try {
int grade = Integer.parseInt(inputGrade.getText());
if (grade < 9 || grade > 12) {
outputHint.setText("Grade not valid");
}
} catch(NumberFormatException e) {
outputHint.setText("Grade not valid");
}
仅当输入的输入无法转换为NumberFormatException
时,捕获Integer
才会出现异常。也许你也错过了最初的if
。