我的程序存在问题。用户可以在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");
}
}
}
没有输出提示。
请帮忙吗? 在此先感谢!!
答案 0 :(得分:3)
你尝试过这样的事吗?
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条件,所以你甚至不能在那之后把不良数字的条件放在那里。
答案 1 :(得分:2)
这是一种简单的方法。
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 !!
}
答案 2 :(得分:0)
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");
}
答案 3 :(得分:0)
仅当输入的输入无法转换为NumberFormatException
时,捕获Integer
才会出现异常。可能你也错过了最初的if
。