当前位置: 首页 > news >正文

自定义异常小练习

 在开始之前,让我们高喊我们的口号:

​​​​​​​

键盘敲烂,年薪百万!


目录

键盘敲烂,年薪百万!

异常综合练习:

自定义异常


异常综合练习:

自定义异常:

  1. 定义异常类
  2. 写继承关系
  3. 空参构造
  4. 带参构造

自定义异常意义:为了让控制台的报错信息更加见名知意

练习:

public class test {public static void main(String[] args) {/*需求:键盘录入自己心仪的女朋友姓名和年龄。姓名的长度在 3 - 10之间,年龄的范围为 18 - 40岁,超出这个范围是异常数据不能赋值,需要重新录入,一直录到正确为止。提示:需要考虑用户在键盘录入时的所有情况。比如:录入年龄时超出范围,录入年龄时录入了abc等情况*//*思路:1.键盘录入2.创建女朋友对象3.接收女朋友的姓名4.接收女朋友的年龄5.打印*//*为什么不直接使用sc.nextInt();?异常处理的局限性:当用户输入非数字内容(如 "abc")时,sc.nextInt()会抛出InputMismatchException,但输入缓冲区中的错误内容不会被清除,导致反复读取abc,无限循环。而通过sc.nextLine()读取整行并手动转换,可以完全控制输入缓冲区的状态。int num = sc.nextInt();sc.nextLine();   // 清除残留的换行符String str = sc.nextLine();   // 正常读取用户输入也可以一开始就直接使用nextLine*/Scanner sc = new Scanner(System.in);GirlFriend gf = new GirlFriend();while (true) {try {System.out.println("你女朋友的姓名是:");String name = sc.nextLine();gf.setName(name);System.out.println("你女朋友的年龄是:");String ageStr = sc.nextLine();int age = Integer.parseInt(ageStr);gf.setAge(age);break;} catch (NumberFormatException e) {System.out.println("输入的年龄的格式有误,请输入数字");}catch (RuntimeException e){System.out.println("姓名的长度或年龄的范围有误!");}}System.out.println(gf);}
}

Girl Friend类:

public class GirlFriend {private String name;private int age;public GirlFriend() {}public GirlFriend(String name, int age) {this.name = name;this.age = age;}/*** 获取* @return name*/public String getName() {return name;}/*** 设置* @param name*/public void setName(String name) {int len = name.length();if (len < 3 || len > 10) {throw new RuntimeException();}this.name = name;}/*** 获取* @return age*/public int getAge() {return age;}/*** 设置* @param age*/public void setAge(int age) {if (age < 18 || age > 40) {throw new RuntimeException();}this.age = age;}public String toString() {return "GirlFriend{name = " + name + ", age = " + age + "}";}
}

练习二见绑定的资源~


今天的分享就到这里,欢迎在评论区交流

一起学习,一起进步!

如果你能关注我

那就是对我创作的最大鼓励啦!

相关文章:

  • QSS 使用方式介绍
  • cf2067A
  • 一个开源脚本,可自动安装在 AMD Radeon 7900XTX 上运行选定 AI 接口所需的所有内容
  • 大数据治理体系构建与实践路径
  • 文科小白学习Linux系统之安全管理
  • Debian:自由操作系统的精神图腾与技术基石
  • 12:遨博机器人开发
  • K6 是什么
  • 变量的计算
  • 25 字符数组与字符串及多维数组详解:定义与初始化、访问与遍历、%s 格式符、内存剖析、编程实战
  • 2025.5.26【ZR NOI模拟赛 T2】草莓函数 题解(性质,二分图最大权匹配)
  • (NAT64)IPv6网络用户访问IPv4网络服务器(动态映射方式)
  • 微内核与宏内核有什么区别(GAI)
  • Java -- 并发编程
  • 项目管理进阶:精读78页 IPD+CMMI+Scrum一体化研发管理解决方案【附全文阅读】
  • matlab雷达定位仿真
  • 约瑟夫问题
  • 企业级网络管理实战:Linux、云与容器的深度融合与优化
  • 关于无法下载Qt离线安装包的说明
  • 企业内训系统源码开发详解:直播+录播+考试的混合式学习平台搭建
  • 网站 免费 托管运营/提升神马seo关键词自然排名
  • 做企业网站报价/长沙seo平台
  • 网站的横幅怎么做/新闻博客软文自助推广
  • 山东城乡建设厅网站首页/最近热点新闻事件2023
  • 幼儿园班级网站建设/百度一下首页登录入口
  • 建设网站的企业名称/武汉seo楚天