自定义类Sanj,其中有成员 x,y,z,作为三边长,
构造方法Sanj(a,b,c)分别给x,y,z赋值,
方法求面积getArea和显示三角形信息(三个边长)showInfo,
这2个方法中当三条边不能构成一个三角形时要抛出自定义异常NotSanjiaoException,否则显示正确信息。
在另外一个类中的主方法中构造一个Sanj对象(三边为命令行输入的三个整数),显示三角形信息和面积,要求捕获异常
import java.util.Scanner;
import static java.lang.Math.sqrt;
public class Sanj {
private int x;
private int y;
private int z;
public Sanj(int x, int y, int z) {
this.x = x;
this.y = y;
this.z = z;
}
private class NotSanjiaoException extends Throwable {
public NotSanjiaoException(String s) {
super(s);
}
}
public double getArea() throws NotSanjiaoException{
if(x+y<=z||x+z<=y||z+y<=x){
throw new NotSanjiaoException("无法构成三角形");
}
int p=x+y+z;
return sqrt(p*(p-x)*(p-y)*(p-z));
}
public void showInfo(){
System.out.println("三角形的三个边长分别为:x="+x+",y="+y+",z="+z);
}
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
System.out.println("分别输入三角形的三个边长:");
int x=scanner.nextInt();
int y=scanner.nextInt();
int z=scanner.nextInt();
Sanj s=new Sanj(x,y,z);
try {
System.out.println(s.getArea());
} catch (NotSanjiaoException e) {
e.printStackTrace();
}
s.showInfo();
}
}