上机练习题——异常处理
课堂练习1:
写一个方法void triangle(int a,int b,int c),判断三个参数是否能构成一个三角形。如果不能则抛出异常IllegalArgumentException,显示异常信息:a,b,c “不能构成三角形”;如果可以构成则显示三角形三个边长。在主方法中得到命令行输入的三个整数,调用此方法,并捕获异常。
代码如下:
Triangle类:
public class Triangle {
int a,b,c;
void judge(int a,int b,int c)
{ try{
if((a+b>c)&&(b+c>a)&&(a+c>b))
{
System.out.printf("三角形的三边是%d,%d,%d\n",a,b,c);
}
else
{
throw new IllegalArgumentException("abc不能构成三角形。");
} }
catch(IllegalArgumentException e)
{
e.getMessage();
e.printStackTrace();
}
}
}
测试类:
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Triangle s=new Triangle();
Scanner in=new Scanner(System.in);
System.out.println("请输入三角形的三边长:");
int a,b,c;
a=in.nextInt();
b=in.nextInt();
c=in.nextInt();
s.judge(a, b, c);
}
}
测试结果:
课堂练习2:
从命令行输入5个整数,放入一整型数组,然后打印输出。要求:
如果输入数据不为整数,要捕获输入不匹配异常,显示“请输入整数”;如果输入数据多余5个,捕获数组越界异常,显示“请输入5个整数”。
无论是否发生异常,都输出“感谢使用本程序!”
package j1101;
import java.util.*;
public class TestArrayException {
public static void main(String[] args) {
int a[] = new int[5];
System.out.println("请输入5个数:");
System.out.println("最后输入一个非数字结束输入操作。");
Scanner in = new Scanner(System.in);
try{
int i = 0;
while(in.hasNextDouble()){
a[i] = in.nextInt();
i++;
}
if(i<5)
throw new ArrayIndexOutOfBoundsException();
for(int j=0;j<5;j++)
System.out.print(a[j]+" ");
System.out.println();
}catch(InputMismatchException e1){
System.err.println("请输入整数作为数组元素!");
e1.printStackTrace();
}catch(ArrayIndexOutOfBoundsException e2){
System.err.println("请输入5个数!");
e2.printStackTrace();
}finally{
System.out.print("感谢使用本程序!");
}
}
}
测试结果:
数字异常:
多于五个数: