class NumberFormatException extends IllegalArgumentException {
时间: 2023-11-15 12:46:05 浏览: 36
class NumberFormatException extends IllegalArgumentException是一个Java类的定义。它继承自IllegalArgumentException,也就是说它是IllegalArgumentException的子类。
NumberFormatException是一个运行时异常,它通常在将字符串转换为数字时出现。当使用像Integer.parseInt("ab3")这样的方法将一个非数字字符串转换为整数时,就会抛出NumberFormatException异常。
这个类的定义没有给出具体的实现,而是继承了IllegalArgumentException的实现。IllegalArgumentException是RuntimeException的子类,它通常用于在方法参数不满足预期条件时抛出异常。
所以,class NumberFormatException extends IllegalArgumentException是用来表示在将字符串转换为数字时可能出现的异常情况,并提供了相应的异常处理机制。
相关问题
2.现在多数学校的成绩管理都由计算机进行管理,这就需要有相应的应用程序,编写成绩管理应用程序,有成绩录入模块。成绩录入过程中,难免出现录入数据的类型出现错误,或录入的成绩不在合理的范围。在录入过程中,若出现上述错误,程序应该如何处理? 请你根据上述问题,合理设计相关异常类,并在录入成绩中,根据录入的数据,捕获异常并进行处理。
根据题目要求,我们需要设计两个异常类,一个用于处理数据类型错误,一个用于处理成绩范围错误。具体实现可以参考以下代码:
```java
package grade;
public class GradeManager {
public static void main(String[] args) {
try {
Grade[] grades = new Grade[3];
grades[0] = new Grade("张三", 85);
grades[1] = new Grade("李四", "90");
grades[2] = new Grade("王五", 110);
// 输出成绩单
for (Grade grade : grades) {
System.out.println(grade);
}
} catch (NumberFormatException e) {
System.out.println("成绩格式不正确!");
} catch (IllegalArgumentException e) {
System.out.println("成绩不在合理的范围内!");
}
}
}
class Grade {
private String name;
private int score;
public Grade(String name, int score) throws IllegalArgumentException {
if (score < 0 || score > 100) {
throw new IllegalArgumentException();
}
this.name = name;
this.score = score;
}
public Grade(String name, String score) throws NumberFormatException, IllegalArgumentException {
int s = Integer.parseInt(score);
if (s < 0 || s > 100) {
throw new IllegalArgumentException();
}
this.name = name;
this.score = s;
}
public String getName() {
return name;
}
public int getScore() {
return score;
}
public String toString() {
return name + ": " + score;
}
}
class NumberFormatException extends Exception {
private static final long serialVersionUID = 1L;
public NumberFormatException() {
super("成绩格式不正确!");
}
}
class IllegalArgumentException extends Exception {
private static final long serialVersionUID = 1L;
public IllegalArgumentException() {
super("成绩不在合理的范围内!");
}
}
```
在上面的代码中,我们设计了两个异常类 NumberFormatException 和 IllegalArgumentException,分别用于处理数据类型错误和成绩范围错误。在 Grade 类的两个构造函数中,我们根据输入的成绩检查其是否合法,如果不合法就抛出相应的异常。在 main 函数中,我们创建了一个包含三个成绩的数组,并分别使用两个构造函数初始化其中的成绩。如果构造函数抛出异常,就捕获并输出异常信息。最后,我们输出整个成绩单,包括每个学生的姓名和成绩。
读入两个数据(Java Aplication命令行参数输入、或通过GUI输入),并计算它们的和,然后将和显示输出。编程自定义异常OnlyOneException(只有一个参数)与NoOprandException(无参数)。如果参数的数目不足,显示相应提示信息并退出程序的执行。
以下是一个基于命令行参数输入的 Java 示例代码:
```java
public class Calculator {
public static void main(String[] args) {
try {
if (args.length != 2) {
throw new IllegalArgumentException("必须输入两个参数");
}
double num1 = Double.parseDouble(args[0]);
double num2 = Double.parseDouble(args[1]);
double sum = num1 + num2;
System.out.println("和为:" + sum);
} catch (NumberFormatException e) {
System.out.println("参数必须是数字");
} catch (IllegalArgumentException e) {
System.out.println(e.getMessage());
}
}
}
```
在上面的代码中,我们首先判断输入参数的个数是否为2,如果不是则抛出 `IllegalArgumentException` 异常。然后将输入的参数转换为 `double` 类型并计算它们的和。如果输入的参数不是数字,则抛出 `NumberFormatException` 异常。如果抛出任何异常,程序将输出相应的错误信息。
接下来,我们定义 `OnlyOneException` 和 `NoOperandException` 两个自定义异常类:
```java
public class OnlyOneException extends Exception {
public OnlyOneException(String message) {
super(message);
}
}
public class NoOperandException extends Exception {
public NoOperandException(String message) {
super(message);
}
}
```
`OnlyOneException` 表示只有一个参数的异常,`NoOperandException` 表示没有参数的异常。这两个异常类都继承了 `Exception` 类,因此它们都是可检查异常,需要在方法签名中声明或在方法内部捕获。
现在,我们可以使用这两个自定义异常类来修改我们的代码:
```java
public class Calculator {
public static void main(String[] args) {
try {
switch (args.length) {
case 0:
throw new NoOperandException("缺少参数");
case 1:
throw new OnlyOneException("只有一个参数");
case 2:
double num1 = Double.parseDouble(args[0]);
double num2 = Double.parseDouble(args[1]);
double sum = num1 + num2;
System.out.println("和为:" + sum);
break;
default:
throw new IllegalArgumentException("超出参数数量限制");
}
} catch (NumberFormatException e) {
System.out.println("参数必须是数字");
} catch (OnlyOneException | NoOperandException | IllegalArgumentException e) {
System.out.println(e.getMessage());
}
}
}
```
现在,我们使用 `switch` 语句根据参数的数量来判断程序应该如何执行。如果没有参数,则抛出 `NoOperandException` 异常;如果只有一个参数,则抛出 `OnlyOneException` 异常;如果有两个参数,则计算它们的和并输出结果;如果参数数量超过2个,则抛出 `IllegalArgumentException` 异常。注意,在 `catch` 语句中,我们使用了多重捕获来捕获不同类型的异常。最后,如果抛出异常,则输出相应的错误信息。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)