尝试使用包含for和if语句Java的catch

时间:2017-11-22 13:59:11

标签: java for-loop if-statement try-catch

我的程序存在问题。用户可以在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");
                }
            }
        }

没有输出提示。

请帮忙吗? 在此先感谢!!

4 个答案:

答案 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