以下是刚开始学习java的基础编程题,每天持续更新java每个知识点的题目,持续练习,不断提高java基本功,培养编程能力。今天的练习的十八题是java的异常处理的使用。
1、检测年龄不能为负数和大于200岁,如果不符合抛出自定义异常
2、编写一个计算N个整数平均值的程序。程序应该提示用户输入N的值,
如何必须输入所有N个数。如果用户输入的值是一个负数,
则应该抛出一个异常并捕获,提示“N必须是正数或者0”。
并提示用户再次输入该数
3、编写代码,在main()方法中调用类CCircle中的方法,计算圆的面积。
并且自己定义一个异常类,如果半径为负值,抛出自己定义的异常。
(在类CCircle中判断并抛出异常)
4、模拟ATM的存取款操作。
定义一个ATM机类, 该类有私有属性金额banlance和有存款方法void deposit()、
取款方法void withdraw()、显示余额double showBalance()
和显示主页面show()方法---显示一些提示操作
如选择1,存款业务
选择2,取款业务
选择3,查询余额业务
选择4,退出
注意:存钱与取钱金额均由键盘输入。
(1)考虑输入的存款金额小于0的
异常处理NotNegativeNumber---这是一个自定义异常类,
(2)考虑输入的存款金额为非数值型的数据 如 “abc”的异常处理
(3)考虑取钱大于余额的异常处理InsufficientFundsException------
这是一个自定义异常类),
(4)考虑输入的取款金额小于0的异常处理NotNegativeNumber,
考虑输入的取款金额为非数值型的数据 如 “abc”的异常处理。
若取钱数大于余额则作为异常处理InsufficientFundsException------
这是一个自定义异常类),要定义好自己的异常类,
并写一个测试类BankTest 测试上面的ATM的功能
5.1)、建立一个Java抽象类Drink 应当
a、声明一个抽象方法taste() 该方法负责输出饮料的味道
b、声明int型常量来代表不同的饮料类型 咖啡、啤酒、牛奶
c、声明静态工厂方法getDrink(int drinkType) 根据传入的参数创建不同的饮料对象
并返回该对象 建议使用switch语句。
该方法要求声明DrinkNotFoundException 当没有相对应的饮料类型时 抛出该异常。
2、建立Drink的具体子类
a、分别建立Drink的子类 Coffee 代表咖啡 Beer 代表啤酒 Milk 代表牛奶 ;
b、实现taste()方法 要求在控制台打印各自的味道特征。
3、建立异常类DrinkNotFoundException
a、继承Exception
b、在Drink的 方 法getDrink(int drinkType)中 声 明 引 发DrinkNotFoundException异常
当传入的参数没有相对应的饮料类型时 抛出异常。
c、在使用getDrink方法的类中捕捉该异常。
4、建立Test测试类 测试以上内容的正确性
a、编写main方法 通过命令行传参的方式传入某种饮料的类型。
b、在main方法中 调用Drink类的getDrink方法 获得相应的饮料对象。
注意捕获DrinkNotFoundException。
c、然后调用该饮料对象的taste()方法 输出该饮料的味道。
5、编译程序 并运行。
6、编写程序CustomException,在期中同时给出两个不同大小的
数字型数组:{4,8,15,32,64,127,256,512}和{2,1,2,4,4,4,8}。
利用循环,将第一个数组包含的数字作为除数,
第二个数组包含的数字作为被除数。
用第一个数组中的数字除以第二个数组中相应位置的元素。
当结果不是偶数或结果是除数本身,此程序要抛出自定义异常,并捕获和处理相关的异常。
提示:自定义异常类,并使用throw抛出异常进行相应处理;多重Catch异常
7、需求说明
在setAge(int age)中对年龄进行判断,如果年龄介于1到100直接赋值,
否则抛出异常
在测试类中创建对象并调用setAge(int age)方法,
使用try-catch捕获并处理异常
8、从命令行得到5个整数,放入一整型数组,然后打印输出,
要求:如果输入数据不为整数,要捕获Integer.parseInt()产生的异常,
显示“请输入整数”,捕获输入参数不足5个的异常(数组越界),
显示“请输入至少5个整数”。
9、写一个方法void sanjiao(int a,int b,int c),
判断三个参数是否能构成一个三角形,如果不能
则抛出异常IllegalArgumentException,
显示异常信息a,b,c+”不能构成三角形”,
如果可以构成则显示三角形三个边长,
在主方法中得到命令行输入的三个整数,调用此方法,并捕获异常。
10、编写一个自己定义的异常类,首先自定义一个异常类triangularException。
再定义一个主类,包含main()方法和area()方法,在main()方法中调用area()方法,
在area()方法中通过参数得到三角形的三边长,如果三边不能构成三角形,
则用throw语句抛出自定义的异常抛出异常,最后返回三角形的面积,
在main()方法中要求测试异常,并捕捉异常,在area()方法中声明异常,
注意数据类型的转换所有数据用double类型。
11、按以下要求完成相关程序1定义一个运动员成绩类:
(1)用适当的数据类型定义5个成员属性:运动员编号、姓名、
参加项目、成绩、所属单位;
(2)适当定义2个构造函数;
(3)定义不少于4个对有关属性进行适当操作的方法;
(4)自定义1个异常,当成绩值为负数时抛出该异常;
(5)编写一个测试程序验证该类的设计效果
12、编写一个程序,从命令行参数输入10个数作为学生成绩,
需对成绩进行有效性判断,若成绩有误则通过异常处理显示错误信息,
并将成绩按高到低排序打印输出。
提示:如果输入数据不为整数,
要捕获Integer.parseInt()产生的异常,显示“请输入成绩”,
捕获输入参数不足10个的异常,显示“请输入至少10个成绩”。
13、编写一个Division类来,来实现除法运算。
被除数和除数通过java运行命令后面添加参数传入,
例如“java Division 100 10”表示求100除以10,
程序除了实现除法运算,将结果显示出来以外,
还要对异常情况进行处理。异常情况包括:
数据格式异常(如用户本该输入数值的地方却输入了字符)、
除数为零的异常等。
14、车站检查危险品的设备,如果发现危险品会发出警告。
编程模拟设备发现危险品。
编写一个Exception的子类DangerException,该子类可以创建异常对象,
该异常对象调用toShow()方法输出“属于危险品”。
编写一个Machine类,该类的方法checkBag(Goodsgoods)
当发现参数goods是危险品时(goods的isDanger属性是true)
将抛出DangerException异常。
程序在主类的main()方法中的try-catch语句的try部分
让Machine类的实例调用checkBag(Goodgoods)方法,
如果发现危险品就在try-catch语句的catch部分处理危险品。
15、模拟借书系统
要求:
1、定义字符串数组保存图书信息
2、提示用户输入,分别按“书名”和“图书序号”查找图书
3、根据输入信息进行适当的异常处理
a、如果输入类型错误,抛出“错误命令异常”,并提示重新输入
b、如果书名不存在,抛出“图书不存在异常”,并提示重新输入
c、如果图书序号超过字符串数组范围,抛出“图书不存在异常”,并提示重新输入
运行效果
16、老师用电脑上课。
开始思考上课中出现的问题。
比如问题是
电脑蓝屏。
电脑冒烟。
要对问题进行描述,封装成对象。
可是当冒烟发生后,出现讲课进度无法继续。
出现了老师师的问题:课时计划无法完成。
17、对于输入的数,如果出现小数,则作为异常处理,
并舍去小数,显示结果;
如果输入的数据类型不对也作为异常处理,显示结果0。
18、模拟向货船上装载集装箱,每个集装箱有一定重量,
该重量(整数)大于100小于1000,货船总重为1000,
装载若干集装箱后,如果货船超重,那么货船认为这是一个异常,
将拒绝装载集装箱,但无论是否发生异常,货船都需要正点启航。
输入:
199
400
300
300
输出:
目前装载了199吨货物
目前装载了599吨货物
目前装载了899吨货物
超重
无法再装载重量是300吨的集装箱
货船将正点启航