7-4 jmu-Java-06异常-04-自定义异常(综合) (15 分)
定义IllegalScoreException异常类,代表分数相加后超出合理范围的异常。该异常是checked exception,即希望该异常一定要被捕获处理。
定义IllegalNameException异常类,代表名字设置不合理的异常。该异常是unchecked exception
定义Student类。
属性:
private String name;
private int score;
方法:
toString //自动生成
setter/getter //自动生成
改造setName //如果姓名首字母为数字则抛出IllegalNameException
public int addScore(int score) //如果加分后分数<0 或>100,则抛出IllegalScoreException,加分不成功。
###main方法:
输入new则新建学生对象。然后输入一行学生数据,格式为姓名 年龄,接着调用setName,addScore。否则跳出循环。
setName不成功则抛出异常,并打印异常信息,然后继续下一行的处理。
addScore不成功则抛出异常,并打印异常信息,然后继续下一行的处理。如果2、3都成功,则打印学生信息(toString)
如果在解析学生数据行的时候发生其他异常,则打印异常信息,然后继续下一行的处理。
Scanner也是一种资源,希望程序中不管有没有抛出异常,都要关闭。关闭后,使用System.out.println(“scanner closed”)打印关闭信息
注意:使用System.out.println(e);打印异常信息,e为所产生的异常。
输入样例:
new
zhang 10
new
wang 101
new
wang30
new
3a 100
new
wang 50
other
输出样例:
Student [name=zhang, score=10]
IllegalScoreException: score out of range, score=101
java.util.NoSuchElementException
IllegalNameException: the first char of name must not be digit, name=3a
Student [name=wang, score=50]
scanner closed
import java.util.*;public class Main{public static void main(String[] args) {Scanner sc = new Scanner(System.in);String s;while (true){s= sc.nextLine();if (s.equals("new")){Student stu=new Student();String s1=sc.nextLine();String[] ss=s1.split(" ");try {stu.setName(ss[0]);}catch (Exception e){continue;}try{stu.addScore(Integer.parseInt(ss[1]));}catch (Exception e){stu.flag=false;System.out.println("java.util.NoSuchElementException");}if (stu.flag) System.out.println(stu);}else if (s.equals("other")){break;}}sc.close();System.out.println("scanner closed");}
}class IllegalScoreException extends RuntimeException{public IllegalScoreException() {}public IllegalScoreException(String message) {super(message);}}class IllegalNameException extends RuntimeException{public IllegalNameException() {}public IllegalNameException(String message) {super(message);}
}class Student{private String name;private int score;boolean flag=true;public String getName() {return name;}public void setName(String name) {if (name.charAt(0)>='0'&&name.charAt(0)<='9'){try{throw new IllegalNameException("the first char of name must not be digit, name=");}catch (IllegalNameException e){flag=false;System.out.println(e+name);}}else {this.name = name;}}public int getScore() {return score;}public void setScore(int score) {this.score = score;}@Overridepublic String toString() {return "Student [" +"name=" + name +", score=" + score +']';}public int addScore(int score){this.score=this.score+score;if (this.score>100||this.score<0){try{throw new IllegalScoreException("score out of range, score=");}catch (IllegalScoreException e){flag=false;System.out.println(e.toString()+score);}}return this.score;}
}
7-4 jmu-Java-06异常-04-自定义异常(综合) (15 分)相关推荐
- 软考中级(软件设计师)——面向对象程序设计(C++Java二选一的题15分-目标3分)
软考中级(软件设计师)--面向对象程序设计(C++&Java二选一的题15分-目标3分) 目录 软考中级(软件设计师)--面向对象程序设计(C++&Java二选一的题15分-目标3分) ...
- 6-2 求圆面积自定义异常类 (15分)
计算圆的面积,其中PI取3.14,圆半径为负数时应抛出异常,输出相应提示.根据提供的主类信息,编写Circle类和CircleException类,以及在相关方法中抛出异常. 函数接口定义: 裁判测试 ...
- 中M22春C、Java入门练习 7-19 计算天数 (15 分)
#include <stdio.h>int main() {int yyyy,mm,dd,y=0,z;scanf("%d/%d/%d",&yyyy,&m ...
- 抛出运行时异常的目的_「JAVA」运行时异常、编译时异常、自定义异常,通过案例实践转译和异常链...
Java基础之异常处理机制 什么是异常 从事Java开发的小伙伴对于"异常"应该不陌生,因为每天都会遇到不少异常,或捕获,或抛出.那究竟什么是异常?异常即非正常的,不同于平常.一般 ...
- java 处理异常的场景_Java高级----异常处理机制、自定义异常----含思维导图
Java高级----异常处理机制.自定义异常----含思维导图 Java高级----异常处理机制.自定义异常----含思维导图 南一Java自学交流QQ群: 586012641 拒绝任何广告,共享Ja ...
- java异常大全,如何处理异常,如何自定义异常
此文章截图转载自:java异常大全!如何处理异常!如何自定义异常!_qq1328585964的博客-CSDN博客_java 异常大全s 我怕文章莫名消失所以转载下!!!我收藏的文章偶尔会没有
- Java 中常见的异常和自定义异常
常见异常: java.lang.nullpointerexception 这个异常大家肯定都经常遇到,异常的解释是"程序遇上了空指针",简单地说就是调用了未经初始化的对象或者 ...
- java常见异常思维导图_21_异常_第21天(异常、企业面试题,思维导图下载)
今日内容介绍 1.异常概述和继承体系 2.异常原因以及处理方式 3.运行时期异常 4.方法重写的异常处理 5.Throwable类常见方法 6.自定义异常 01异常的概述 * A: 异常的概述 * a ...
- java 抛异常给上级_java异常处理机制(示例代码)
Exception 类的层次 java中所有的异常类是从 java.lang.Exception 类继承的子类. 而Exception 类是 Throwable (可抛出的)类的子类.除了Except ...
最新文章
- cnn 反向传播推导_反向传播算法推导过程(非常详细)
- 机器学习系列(1)_逻辑回归初步
- BUUCTF--[VN2020 公开赛]拉胯的三条命令
- mariadb mysql 语法_Mariadb MySQL、Mariadb中GROUP_CONCAT函数使用介绍
- 【需求工程】需求获取
- Java笔记-JNI中Java与C语言解决中文乱码问题
- 手机端公告文本回滚(简单的jq代码)
- vue + element中el-table导出excel
- .NET库和向后兼容的技巧——第3部分
- 电脑排行榜笔记本_热门笔记本电脑排行榜推荐_windows7教程
- hibernate 的SessionFactory的getCurrentSession 与 openSession() 的区别
- 深入浅出通信原理知识点8
- 本特利330906-02-12-05-02-CN传感器
- 宝尚简讯-短期震荡在蓄势
- excel冻结窗口怎么设置_excel冻结多行怎么设置-和冻结首行一样哦
- 喷漆房出现故障应该如何处理
- Uniapp Base64码 播放音频(MP3)
- 用友NC远程命令执行漏洞通告
- DSF view Model
- 修复迅雷看看xmp.rmvb视频文件错误关联
热门文章
- GCC编译器选项及优化提示
- ubuntu 编译QT Basic XLib functionality test failed!问题解决
- php实现贴吧功能,PHPCMS V9万能字段增加单选功能,实现多条房产信息调用1个开发商信息等效果...
- java 雪花特效_java实现图片飘雪花的特效
- 什么叫做罗列式_陈列,罗列是什么意思?
- java double 小数点后两位小数_Java中double类型的数据精确到小数点后两位
- 回帖赢好礼,让AI回应你的要求
- 经典营销模型的产品化介绍
- EDAS微服务应用同城容灾最佳实践
- 使用Xshell链接阿里的Linux服务器