题目描述
编写程序,使用自定义异常,实现判断用户输入年龄,如果用户输入的年龄为负数,则抛出NegativeAgeException异常;如果用户输入的年龄大于125,抛出TooOldException异常;如果用户输入的不是数字,抛出NotNumberException异常。
源代码
以下是使用自定义异常实现判断用户输入年龄的Java程序示例:
import java.util.Scanner;
// 自定义异常类:年龄为负数
class NegativeAgeException extends Exception {
public NegativeAgeException(String message) {
super(message);
}
}
// 自定义异常类:年龄过大
class TooOldException extends Exception {
public TooOldException(String message) {
super(message);
}
}
// 自定义异常类:输入非数字
class NotNumberException extends Exception {
public NotNumberException(String message) {
super(message);
}
}
public class AgeValidator {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
try {
System.out.print("请输入年龄: ");
int age = validateAge(scanner.nextLine());
System.out.println("年龄合法,输入的年龄为: " + age);
} catch (NegativeAgeException e) {
System.out.println("年龄不能为负数: " + e.getMessage());
} catch (TooOldException e) {
System.out.println("年龄过大: " + e.getMessage());
} catch (NotNumberException e) {
System.out.println("输入的不是数字: " + e.getMessage());
}
}
// 验证年龄是否合法
public static int validateAge(String input) throws NegativeAgeException, TooOldException, NotNumberException {
try {
int age = Integer.parseInt(input);
if (age < 0) {
throw new NegativeAgeException("年龄不能为负数");
} else if (age > 125) {
throw new TooOldException("年龄过大");
}
return age;
} catch (NumberFormatException e) {
throw new NotNumberException("输入的不是数字");
}
}
}
在这个示例程序中,我们定义了三个自定义异常类:NegativeAgeException
、TooOldException
和NotNumberException
。每个异常类都继承自Exception
类,并通过构造函数传入异常信息。
在AgeValidator
类的main
方法中,我们首先创建一个Scanner
对象用于读取用户输入。然后,调用validateAge
方法验证用户输入的年龄。
validateAge
方法接受一个字符串参数作为用户输入的年龄,然后尝试将其转换为整数类型。如果转换成功,我们判断年龄是否为负数或者是否大于125,如果是,则抛出相应的自定义异常。如果转换失败,则抛出NotNumberException
异常。
在main
方法中,我们使用try-catch
语句捕获可能抛出的自定义异常,并输出相应的错误信息。
请注意,在validateAge
方法中,我们使用了NumberFormatException
来捕获用户输入非数字的情况,并抛出NotNumberException
异常。
运行截图
© 版权声明
本站资源来自互联网收集,仅供用于学习和交流,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!
THE END