1.完成c=a/b 的计算并输出c的结果,可以为a和b在程序中赋初值、或者接收用户通过键盘输入a和b的数值文本后转换为数字等,在程序要求当 b 为0时c的计算结果正确.
这里使用到的try...catch来进行异常处理,格式如下:
/*
try...catch...异常处理方法
try{
可能出现异常的代码;
}catch(异常类名 变量名){
异常的处理代码;
}
*/
如果不用异常出来,当 int/int 中除数为0,会出现异常,如下:
import java.util.Scanner;
public class Abnormity //类名
{
public static void main(String[] args) {
//创建对象,从键盘录入数字
Scanner sc = new Scanner(System.in);
System.out.println("请输入除数");
int a = sc.nextInt();//定义int类型变量a接收键盘录入数字用作除数
System.out.println("请输入被除数字");
int b = sc.nextInt();//定义int类型变量b接收键盘录入数字用作被除数
float c = a/b; //定义float变量c用于存储a/b的值
System.out.println("a/b的结果为:"+c);//输出c
}
}
当a为5,b为0,会出现java.lang.ArithmeticException: / by zero 异常,结果如下:
使用try...catch处理如下:
/*
try...catch...异常处理方法
try{
可能出现异常的代码;
}catch(异常类名 变量名){
异常的处理代码;
}
执行流程:
程序从try里面的代码开始运行,出现异常会自动生成
一个异常类对象,该异常对象将被提交给java运行时系统
当java运行时系统接收到异常对象时,回到catch中去匹配异常类,
找到后进行异常的处理,执行完毕之后,程序还可以继续往下运行
*/
import java.util.Scanner;
public class Abnormity //类名
{
public static void main(String[] args) {
//创建对象,从键盘录入数字
Scanner sc = new Scanner(System.in);
System.out.println("请输入除数");
int a = sc.nextInt();//定义int类型变量a接收键盘录入数字用作除数
System.out.println("请输入被除数字");
int b = sc.nextInt();//定义int类型变量b接收键盘录入数字用作被除数
// float c = a/b; //定义float变量c用于存储a/b的值
// System.out.println("a/b的结果为:"+c);//输出c
try //里面时可能出现错误的代码
{
float c = a/b; //定义float变量c用于存储a/b的值
System.out.println("a/b的结果为:"+c); //输出c
}catch (ArithmeticException e)//ArithmeticException是出现错误的类名
{
System.out.println("出现错误"); //当代码有异常时输出
}
}
}
当被除数为0时会显示预先设置好的信息,结果如下:
2.完成一个计算绝对值表达式 |a-b|的功能。 要求当b比a大时人为抛出一个自定义异常, 在计算绝对值时通过异常捕捉机制完成此绝对值表达式的计算。
首先自定义一个异常类SubException如下:
//创建自定义异常类,继承与Exception
public class SubException extends Exception
{
public SubException(String message)//定义构造方法
{
super(message); //继承于父类
}
}
然后创建一个类用与计算绝对值以及处理抛出异常信息,如下:
public class Jueduizhi {
//创建绝对值的方法jdz
public void jdz(int a,int b ) throws SubException //使用throws抛出异常
{
if(b>a){ //如果b大于a,会产生异常对象,将这个异常对象跑出去
throw new SubException("b>a,出现错误"); //throw 是用来在方法体内部抛出对象
}else{
System.out.println("a-b的绝对值为:"+(a-b)); //当a>b时输出正常的绝对值
}
}
}
最后创建一个类用与测试:
/*
完成一个计算绝对值表达式 |a-b|的功能。
要求当b比a大时人为抛出一个自定义异常,
在计算绝对值时通过异常捕捉机制完成此绝对值表达式的计算。
*/
public class JuiduizhiTest //类名
{
public static void main(String[] args) {
System.out.println("计算a-b的绝对值");
//创建对象,从键盘录入数据
Scanner sc = new Scanner(System.in);
System.out.println("输出a的值");
int a = sc.nextInt();//从键盘输入a的值
System.out.println("输出b的值");
int b = sc.nextInt();//从键盘输入b的值
//创建Jueduizhi的对象
Jueduizhi j = new Jueduizhi();
try {
//用对象来调用jdz方法执行a-b的绝对值
j.jdz(a,b);//这里会显示异常,使用try...catch来处理
} catch (SubException e) //SubException是自定义异常类名
{
e.printStackTrace(); //输出显示异常的信息
}
}
}
当a为5,b为6时结果如下:
异常类名就是自定义的SubException,显示的异常信息也是自行设置的。
当a为5,b为4就输出正常的绝对值: