题目:
自定义类Sanj,其中有成员 x,y,z,作为三边长,构造方法Sanj(a,b,c)分别给x,y,z赋值,方法求面积getArea和显示三角形信息(三个边长)showInfo,这2个方法中当三条边不能构成一个三角形时要抛出自定义异常NotSanjiaoException,否则显示正确信息。在另外一个类中的主方法中构造一个Sanj对象(三边为命令行输入的三个整数),显示三角形信息和面积,要求捕获异常。
import java.util.Scanner;
/**
* @author: 袁
* @date: 2022-10-09 0:15
* @desc:自定义类Sanj,其中有成员 x,y,z,作为三边长,构造方法Sanj(a,b,c)分别给x,y,z赋值,
* 方法求面积getArea和显示三角形信息(三个边长)showInfo,这2个方法中当三条边不能构成一个三角形时要抛出自定义异常NotSanjiaoException,
* 否则显示正确信息。在另外一个类中的主方法中构造一个Sanj对象(三边为命令行输入的三个整数),显示三角形信息和面积,要求捕获异常。
*/
class NotSanjiaoException extends Exception{
double x,y,z;
public NotSanjiaoException(String str,double a, double b,double c){
super(str); // 把报错信息传递给父类,在main中用e.getMessage()输出报错信息
x = a;
y = b;
z = c;
}
}
class Sanj {
double x;
double y;
double z;
Sanj(double x,double y, double z){
this.x = x;
this.y = y;
this.z = z;
}
void getArea() throws NotSanjiaoException { // 抛出异常要进行声明
if(x + y < z || x + z < y || y + z < x || x - y > z || x - z > y || y - x > z || y - z > x || z - x > y ||z - y > x)
throw new NotSanjiaoException("不能构成三角形",x,y,z);
else{
double p = (x + y + z ) / 2;
System.out.println( Math.sqrt(p * (p - x) * (p - y) * (p - z) ));
}
}
void showInfo() throws NotSanjiaoException { // 抛出异常要进行声明
if(x + y < z || x + z < y || y + z < x || x - y > z || x - z > y || y - x > z || y - z > x || z - x > y ||z - y > x)
throw new NotSanjiaoException("不能构成三角形",x,y,z);
else{
System.out.print(x + " "+ y + " " + z);
}
}
}
public class TriangleTest02 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
double x = scanner.nextDouble();
double y = scanner.nextDouble();
double z = scanner.nextDouble();
Sanj sanj = new Sanj(x,y,z);
try {
sanj.getArea();
sanj.showInfo();
}
catch (NotSanjiaoException e){
System.out.println(e.x + " " + e.y +" " + e.z +" " + e.getMessage());
}
}
}