三角形面积计算,自定义异常类
自定义异常类TriangleException
public class TriangleException extends Exception{
String message;
//构造方法
public TriangleException(){
}
//构造方法,传入一个参数,继承父类构造
public TriangleException(String message){
this.message=message;
}
//构造方法,传入两个参数,继承父类构造
public TriangleException(String message,Exception n){
super(message,n);
}
//覆盖toString方法
public String toString(){
return message;
}
}
三角形类Triangle面积计算
package homework;
import java.util.Scanner;
public class Triangle {
//三角形三边长
int a,b,c;
//构造方法传入三边长
public Triangle(int a,int b,int c){
this.a=a;
this.b=b;
this.c=c;
}
//判断三边长是否大于0
public boolean check1()throws TriangleException{
//判断边长,抛出自定义异常
if(!(a>0&&b>0&&c>0)){
throw new TriangleException("边长小于0,参数无效异常");
}
return true;
}
//判断能否构成三角形
public boolean check2()throws TriangleException{
boolean x,y,z;
x=a+b-c>0;
y=a+c-b>0;
z=b+c-a>0;
if(!(x&&y&&z)){
throw new TriangleException("无法构成三角形异常!");
}
if((a==b)||(a==c)||(b==c)){
System.out.println("这是等腰三角形!");
if((a==b)&&(b==c)){
System.out.println("也是等边三角形!");
}
}
int a1=a*a,b1=b*b,c1=c*c;
if((a1+b1==c1)||(a1+c1==b1)||(b1+c1==a1)){
System.out.println("这个三角形是直角三角形!");
}
return true;
}
//面积计算
public void area(){
boolean t1=false;
boolean t2=false;
double p,s;
try {
t1=check1();
t2=check2();
}catch(TriangleException e){
System.out.println("自定义异常: "+e.toString());
}
if(t1&&t2){
p=(a+b+c)/2;
s=Math.sqrt((p*(p-a)*(p-b)*(p-c)));
System.out.println("三角形面积为:"+s);
}
}
//主方法
public static void main(String[] args) {
int a,b,c;
Scanner scanner=new Scanner(System.in);
System.out.println("请输入三个数:");
a=scanner.nextInt();
b=scanner.nextInt();
c=scanner.nextInt();
Triangle tri=new Triangle(a,b,c);
tri.area();
}
}
测试结果
请输入三个数:
3
4
5
这个三角形是直角三角形!
三角形面积为:6.0
请输入三个数:
3 3 3
这是等腰三角形!
也是等边三角形!
三角形面积为:2.0
请输入三个数:
0 9 7
自定义异常: 边长小于0,参数无效异常
边长小于0,参数无效异常
at homework.Triangle.check1(Triangle.java:16)
at homework.Triangle.area(Triangle.java:47)
at homework.Triangle.main(Triangle.java:70)