Java 无法抛出IllegalArgumentException

Java 无法抛出IllegalArgumentException,java,exception,throw,throws,Java,Exception,Throw,Throws,我需要程序接受3个测试分数,然后打印它们的平均值,但是如果分数小于-1或大于100,它应该抛出一个IllegalArgumentException。我可以打印出平均值,但在测试-1或101时,它不会抛出异常。我做错了什么 我对学习异常非常陌生,因此非常感谢您的帮助 这是我的密码: import java.util.Scanner; import java.io.*; public class TestScores { public static void main(String[]args)

我需要程序接受3个测试分数,然后打印它们的平均值,但是如果分数小于-1或大于100,它应该抛出一个IllegalArgumentException。我可以打印出平均值,但在测试-1或101时,它不会抛出异常。我做错了什么

我对学习异常非常陌生,因此非常感谢您的帮助

这是我的密码:

import java.util.Scanner;
import java.io.*;

public class TestScores
{
public static void main(String[]args)
{
    Scanner keyboard = new Scanner(System.in);

    int[]scores = new int [3];

    System.out.println("Score 1:");
    scores[0] = keyboard.nextInt();

    System.out.println("Score 2:");
    scores[1] = keyboard.nextInt();

    System.out.println("Score 3:");
    scores[2] = keyboard.nextInt();

    int totalScores = scores[0] + scores[1] + scores[2];
    int average = 0;

    if (scores[0] >= 0 && scores[0] <= 100 || 
        scores[1] >= 0 && scores[1] <= 100 ||
        scores[2] >= 0 && scores[2] <= 100)
    {
        try
        {
            average = totalScores / 3;
        }

        catch(IllegalArgumentException e) 
        {
            System.out.println("Numbers were too low or high.");
        }

        System.out.println("Average Score: " + average);
    }



} //end of public static void



} //end of TestScores
import java.util.Scanner;
导入java.io.*;
公开课考试成绩
{
公共静态void main(字符串[]args)
{
扫描仪键盘=新扫描仪(System.in);
int[]分数=新的int[3];
System.out.println(“分数1:”);
分数[0]=键盘.nextInt();
System.out.println(“分数2:”);
分数[1]=keyboard.nextInt();
System.out.println(“分数3:”);
分数[2]=键盘.nextInt();
整数总分=分数[0]+分数[1]+分数[2];
整数平均=0;
如果(分数[0]>=0&&scores[0]=0&&scores[1]=0&&scores[2]则语法为

if (condition) {
    throw new IllegalArgumentException("message here");
}
语法是

if (condition) {
    throw new IllegalArgumentException("message here");
}

你就快到了……在你的
if
中,你确保所有分数都在适当的范围内

if
失败时,您希望在
else
中抛出IllegalArgumentException,如下所示:

if (scores[0] >= 0 && scores[0] <= 100 || 
    scores[1] >= 0 && scores[1] <= 100 ||
    scores[2] >= 0 && scores[2] <= 100)
{
    average = totalScores / 3;        
    System.out.println("Average Score: " + average);
}
else 
{
   throw new IllegalArgumentException("Numbers were too low or high.");
}

if(scores[0]>=0&&scores[0]=0&&scores[1]=0&&scores[2]您就快到了……在您的
if
中,您正在确保所有分数都在适当的范围内

if
失败时,您希望在
else
中抛出IllegalArgumentException,如下所示:

if (scores[0] >= 0 && scores[0] <= 100 || 
    scores[1] >= 0 && scores[1] <= 100 ||
    scores[2] >= 0 && scores[2] <= 100)
{
    average = totalScores / 3;        
    System.out.println("Average Score: " + average);
}
else 
{
   throw new IllegalArgumentException("Numbers were too low or high.");
}

如果(分数[0]>=0&&scores[0]=0&&scores[1]=0&&scores[2]它可以捕获一个异常,即应用程序在
try
块中抛出异常


在您的
try
块中,我们只看到
average=totalScores/3;
,它不会抛出任何异常。因此它不会捕获抛出的任何内容

您可以使用此函数引发异常-
IllegalArgumentException

public static int getInputScore(Scanner keyboard) {
    int score = keyboard.nextInt();
    if (score < 0 || score >= 100) {
        throw new IllegalArgumentException(); 
    }
    return score;
}

它可以捕获应用程序在
try
块中抛出异常的异常


在您的
try
块中,我们只看到
average=totalScores/3;
,它不会抛出任何异常。因此它不会捕获抛出的任何内容

您可以使用此函数引发异常-
IllegalArgumentException

public static int getInputScore(Scanner keyboard) {
    int score = keyboard.nextInt();
    if (score < 0 || score >= 100) {
        throw new IllegalArgumentException(); 
    }
    return score;
}

执行算术将如何抛出一个
IllegalArgumentException
?如果达到该点,您已经知道这些数字是有效的。另外,如果您不知道:2个整数的除法会产生一个整数。我今天刚在课堂上被介绍抛出异常,但我并不真正理解它们。
平均值=总分/3
不会抛出一个IllegalArgumentException。执行算术将如何抛出一个
IllegalArgumentException
?如果达到该点,您已经知道数字是有效的。另外,如果您不知道:2个整数的除法产生一个整数。我今天刚在课堂上被介绍抛出异常,我真的不知道了解它们。
average=totalScores/3;
不会抛出非法辩论例外。这有助于我更好地理解它。谢谢!这有助于我更好地理解它。谢谢!谢谢!这有助于我更好地理解。出于某种原因,我的书无法如此简单地表达。谢谢!这有助于我更好地理解。对于一些人来说因为,我的书不能这么简单地说。