目标效果:
代码:
import java.util.Arrays;
import java.util.Scanner;
/**
* 写一个方法void triangle(int a,int b,int c),判断三个参数是否能构成一个三角形。
* 如果不能则抛出异常IllegalArgumentException,显示异常信息:a,b,c “不能构成三角形”;
* 如果可以构成则显示三角形三个边长。
* 在主方法中得到命令行输入的三个整数,调用此方法,并捕获异常。
* @author Vivinia
*
*/
public class Test {
public static int[] side;
public static void main(String[] args) {
side=new int[3];
Scanner input=new Scanner(System.in);
try {
side[0]=input.nextInt();
side[1]=input.nextInt();
side[2]=input.nextInt();
Arrays.sort(side);
triangle(side[0],side[1],side[2]);
} catch (IllegalArgumentException e) {
e.getMessage();
e.printStackTrace();
}catch (Exception e) {
e.printStackTrace();
}finally {
input.close();
}
}
public static void triangle(int a,int b,int c)throws Exception{
if((a+b>c)&&(a-b<c))
System.out.println("可以构成三角形");
else
throw new IllegalArgumentException("三条边不能构成三角形");
}
}
几个小问题:
1.当有些异常需要自行设置时,比如输入的范围,应该使用throw new Exception()进行抛出异常,并且在catch里进行捕获处理。
2.如果一个方法中不进行catch捕获,则在函数头处使用throws Exception进行抛出,在调用该函数的方法中进行catch捕获,如果不处理需要再抛出,最终必须要处理这个异常。