【java】三角形(Object 类与异常处理)

【案例问题】

  1. 案例描述

平面三角形有三个属性:三条边的长度(假设称为 sideA, sideB, sideC)。为了简化问
题的处理,我们假设三边长度均为整型,且 sideA<=sideB<=sideC。同时,三角形的边
长必须满足以下要求:两边之和应大于第三边的长度。
要求编写一个三角形类 Triangle,能够:

 输出三角形的三边的长度;

 设置三边长度,并进行合法性检测,如果不合法则抛出自定义异常表示三角形参
数不合法;

 提供方法判断两个三角形是否相等——判断一致的标准两个三角形的三边都分
别对应相等。即 aa, bb, c==c。

  1. 运行结果
    在这里插入图片描述

【案例目标】

• 学会分析“三角形”程序设计的实现思路。

• 根据思路独立完成“三角形”程序设计的源代码编写、编译及运行。

• 掌握 Object 类的知识。

• 掌握 Java 异常处理。

【案例分析】

Object 类是所有类的父类,也就是说 Java 的所有类都继承了 Object,子类可以使
用 Object 的所有方法。

在这里插入图片描述
Object 类位于 java. lang 包中,编译时会自动导入,我们创建一个类时,如果没有
明确继承一个父类,那么它就会自动继承 Object,成为 Object 的子类。

1、创建一个表示平面三角形的类 Triangle。
该类有 3 个私有整型属性: sideA, sideB, sideC,分别代表三边的长度。
该类的方法有:

 void setSides (int sideA, int sideB, int sideC) 方法,用于设置三边。如
果参数不合法,则创建自定义异常类对象,并将其抛出。因此,这个方法声明时
还需要声明抛出自定义异常。

 三个属性的 getter 方法;

 重写上表中 Object 父类的 equals (Object obj)方法,用于判断两个三角形是否相等。提示:需要对 obj 对象进行强制类型转换,然后才能访问三角形的属性和
方法。

 重写上表中 Object 父类的 toString ()方法用于返回格式为“ (*, *, )”字符串,
其中
是边长。
最后两个重写方法要注意:重写时访问权限不能降低;方法参数列表须与父类一致。

2、编写自定义异常类。

该类继承自 Exception。

有一个构造方法(String s),它调用 super(s)方法用于初始化异常信息。

3、编写演示类。在主方法中依次:

创建三个三角形对象 t1,t2 和 t3。
t1 和 t2 对象分别调用 setSides 方法设置三边之长,分别为(3,4,5)和(6,8,10)。

输出三边长度信息(通过对象 toString 方法返回的字符串)。

输出 t1 和 t2 是否相等(利用 equals 方法判断)
t3 对象调用 setSides 方法设置三边之长(1,2,8)。

上述代码中,调用 setSides 方法可能抛出产生异常,可以将上述代码放在 try 语句
块。
在 catch 语句块中,打印异常对象的 getMessage()返回的字符串,实现输出“三角形
参数不合法”的功能。
打印演示结束的内容,可以放在 finally 语句块中。

【运行代码】
1

package cn.edu.gpnu.bank.Triangle;

public class Triangle {
    private int sideA;
    private int sideB;
    private int sideC;
    public String name;

    @Override
    public boolean equals(Object obj) {
        if (this == obj) return true;
        if (obj == null || getClass() != obj.getClass()) return false;
        Triangle triangle = (Triangle) obj;
        return sideA == triangle.sideA && sideB == triangle.sideB && sideC == triangle.sideC;
    }

    @Override
    public String toString() {
        return this.name+"("+ sideA +","+ sideB +","+ sideC +
                ')';
    }

    public void setSides(int sideA, int sideB, int sideC) throws Exception{
        this.sideA = sideA;
        this.sideB = sideB;
        this.sideC = sideC;

            if (sideA + sideB <= sideC || sideA + sideC <= sideB)  {
                throw new Exception("三角形参数不合法");
            }
    }

    public Triangle() {

    }


    public int getSideA() {
        return sideA;
    }

    public int getSideB() {
        return sideB;
    }

    public int getSideC() {
        return sideC;
    }




}
package cn.edu.gpnu.bank.Triangle;

class Exceptinos extends Exception{
    public String s;

    public Exceptinos(String s) {
        this.s = s;
    }

    public Exceptinos(String message, String s) {
        super(message);
        this.s = s;
    }
}

package cn.edu.gpnu.bank.Triangle;

public class TriangleTest {
    public static void main(String[] args){
        Triangle t1= new Triangle();
        Triangle t2= new Triangle();
        Triangle t3= new Triangle();

        try {
            t1.setSides(3, 4, 5);
            t2.setSides(6, 8, 10);
        }
        catch(Exception e){
            System.out.println(e.getMessage());
        }

         t1.name ="三角形1";
         t2.name ="三角形2";
        System.out.println("三角形1 等于 三角形2:"+t1.equals(t2));

        System.out.println(t1.toString());
        System.out.println(t2.toString());

        try {
            t3.setSides(1, 2, 8);
        }
        catch(Exception e){
            System.out.println(e.getMessage());
        }



    }
}

【运行结果】
在这里插入图片描述

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值