Java 无法抛出IllegalArgumentException
我需要程序接受3个测试分数,然后打印它们的平均值,但是如果分数小于-1或大于100,它应该抛出一个IllegalArgumentException。我可以打印出平均值,但在测试-1或101时,它不会抛出异常。我做错了什么 我对学习异常非常陌生,因此非常感谢您的帮助 这是我的密码: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)
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;
不会抛出非法辩论例外。这有助于我更好地理解它。谢谢!这有助于我更好地理解它。谢谢!谢谢!这有助于我更好地理解。出于某种原因,我的书无法如此简单地表达。谢谢!这有助于我更好地理解。对于一些人来说因为,我的书不能这么简单地说。