Java 为什么每次输入都会出现IllegalArgumentException?

Java 为什么每次输入都会出现IllegalArgumentException?,java,illegalargumentexception,Java,Illegalargumentexception,我需要创建一个程序来计算用户输入的测试分数的平均值。这实际上是我第二次有任务要求制作这个程序。但这一次,当用户输入的testscore小于0或大于100时,任务希望我抛出一个IllgalArgumentException。问题是,无论测试分数是多少,即使测试分数在0-100之间,程序都会因IllegalArgumentException而崩溃。不确定我做错了什么这里有任何想法预期输出无一例外 预期产量 Enter number of test scores:5 Enter test score

我需要创建一个程序来计算用户输入的测试分数的平均值。这实际上是我第二次有任务要求制作这个程序。但这一次,当用户输入的testscore小于0或大于100时,任务希望我抛出一个IllgalArgumentException。问题是,无论测试分数是多少,即使测试分数在0-100之间,程序都会因IllegalArgumentException而崩溃。不确定我做错了什么这里有任何想法预期输出无一例外

预期产量

Enter number of test scores:5
Enter test score 1:70
Enter test score 2:65
Enter test score 3:94
Enter test score 4:55
Enter test score 5:90
74.8
还有我的密码

public static void main(String[] args) throws IllegalArgumentException 
{
    Scanner input = new Scanner (System.in);
    int numTests = 0;
    int [] grade = new int [numTests];
    double average;
    double totalGrades = 0;

    System.out.print("Enter number of test scores:");
    numTests = input.nextInt();
    grade = new int[numTests];

    for (int index = 0; index < grade.length; index++)
    {
        System.out.print("Enter test score "  + (index + 1) + ":");
        grade[index] = input.nextInt();


            if(grade[index] < 0 || grade[index] > 100);
            {
                throw new IllegalArgumentException();

            }        
    }

    for (int i = 0; i < grade.length; i++)
    {
        totalGrades += grade[i];
    }

    average = totalGrades / grade.length;

    System.out.println(average);

}

private static class IllegalArgumentException extends Exception
{
    public IllegalArgumentException()
    {
        super("Test scores must have a value  less than  100 and greater than  0.");
    }

    public IllegalArgumentException(int value)
    {
        super("Invalid Test Score: " + value);
    }
}
publicstaticvoidmain(String[]args)抛出IllegalArgumentException
{
扫描仪输入=新扫描仪(System.in);
int numTests=0;
int[]等级=新int[numTests];
双倍平均;
双倍总分=0;
系统输出打印(“输入测试分数:”);
numTests=input.nextInt();
等级=新整数[numTests];
对于(int index=0;index100);
{
抛出新的IllegalArgumentException();
}        
}
对于(int i=0;i

删除

为什么要声明一个新类
IllegalArgumentException
?为什么不直接使用
java.lang.IllegalArgumentException
,提供您想要的消息作为参数?@AndyTurner我本来没有第二个,但它是将错误消息显示为循环的一部分,因此错误消息出现了5次,程序没有崩溃
if(grade[index] < 0 || grade[index] > 100);
{
  throw new IllegalArgumentException();
}
if(grade[index] < 0 || grade[index] > 100) { /* do nothing */ }
throw new IllegalArgumentException();