.自定义类Sanj,其中有成员 x,y,z,作为三边长,构造方法Sanj(a,b,c)分别给x,y,z赋值,方法求面积getArea和显示三角形信息(三个边长)showInfo,这2个方法中当三条边不

本文介绍了一个自定义的三角形类Sanj,该类通过输入三条边的长度来构造,并提供了计算面积和显示边长信息的方法。如果输入的边长无法构成三角形,则会抛出自定义异常NotSanjiaoException。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目:

自定义类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());
       }



    }
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值