目录
一、除数不能为0
二、校验年龄格式
三、终端循环
四、 计算最大公约数
一、除数不能为0
使用静态变量、静态方法以及throws关键字,实现当两个数相除且除数为0时,程序会捕获并处理抛出的ArithmeticException异常(算术异常),运行结果如下:
小学生都笑哭了:除数不能是0!!!
package haha;
public class Captor{public static double chu(double a,double b) throws ArithmeticException{if(b==0) {throw new ArithmeticException("小学生都笑哭了:除数不能是0!!!");}return a/b;}public static void main(String[] args) {try {double m=3;double n=0;double k=chu(m,n);System.out.println(k);}catch(ArithmeticException e) {System.out.println(e);}}
}
二、校验年龄格式
编写一个信息录入程序,获取用户输入的姓名和年龄。如果用户输入的年龄不是正确的年龄数字(如0.5),则抛出异常并让用户重新输入;如果年龄正确,则打印用户输入信息。
//自定义异常MyException
package haha;public class MyException extends Exception{ //创建自定义异常类public MyException(String ErrorMessage) {super(ErrorMessage);}
}//校验年龄格式package haha;
import java.util.Scanner;
public class Captor{static void que() throws MyException{Scanner sc=new Scanner(System.in);System.out.println("请输入用户的姓名和年龄(用空格隔开)");String name=sc.next();double age=sc.nextDouble();if(age>(int) age) {throw new MyException("年龄的输入格式错误!请重新输入!");}System.out.print("姓名:"+name+"\n"+"年龄:"+(int) age);sc.close();}public static void main(String[] args) {try {que();}catch(MyException e) {System.out.println(e);}}
}
三、终端循环
编写使用for循环在控制台上输出0~9的代码。代码要实现以下两个功能:当循环变量的值为2时,抛出异常,循环中断;当循环变量的值为2时,虽然会抛出异常,但是循环不会中断。
中断代码:
//自定义异常MyException
package haha;public class MyException extends Exception{ //创建自定义异常类public MyException(String ErrorMessage) {super(ErrorMessage);}
}//中断代码
package haha;
public class Captor{static void que() throws MyException{for(int i=0;i<10;i++) {if(i==2) {throw new MyException("出现异常,循环中断!");}System.out.println(i);}}public static void main(String[] args) {try {que();}catch(MyException e) {System.out.println(e);}}
}
不中断代码:
//自定义异常MyException
package haha;public class MyException extends Exception{ //创建自定义异常类public MyException(String ErrorMessage) {super(ErrorMessage);}
}//不中断代码
package haha;
public class Captor{static void que() throws MyException{for(int i=0;i<10;i++) {System.out.println(i);if(i==2) {throw new MyException("出现异常!");}}}public static void main(String[] args) {try {que();}catch(MyException e) {System.out.println(e);}for(int i=3;i<10;i++) {System.out.println(i);}}
}
四、 计算最大公约数
创建Computer类,该类中有一个计算两个数最大公约数的方法,如果向该方法传递负整数,该方法就会抛出自定义异常。
package haha;
import java.util.Scanner;
public class computer{public static int que(int a,int b) throws MyException{if(a<0||b<0) {throw new MyException("不能传递负整数!");}if(a>=b) {int c;while(a%b!=0) {c=a%b;a=b;b=c;}return b;}else {int c;while(b%a!=0) {c=b%a;b=a;a=c;}return a;}}public static void main(String[] args) {try {Scanner sc=new Scanner(System.in);System.out.println("请输入两个整数(用空格隔开):");int m=sc.nextInt();int n=sc.nextInt();int k=que(m,n);System.out.println(m+"和"+n+"的最大公约数是"+k);sc.close();}catch(MyException e) {System.out.println(e);}}
}