目录
一、除数不能为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);
}
}
}