自定义类Sanj,其中有成员 x,y,z,作为三边长,构造方法Sanj(),方法求面积getArea和显示三角形信息showInfo,在另一个类中的主方法中构造一个Sanj对象,显示面积,要求捕获异常

本文介绍了一个自定义的三角形类Sanj,该类包含构造方法、求面积方法getArea及显示三角形信息的方法showInfo。getArea方法在无法构成三角形时会抛出自定义异常NotSanjiaoException。主方法通过读取用户输入来实例化Sanj对象并调用这些方法。


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

import java.util.Scanner; // 自定义异常:不能构成三角形时抛出 class NotSanJiaoException extends Exception {     public NotSanJiaoException(String message) {         super(message);     } } // 三角形 class Sanj {     private double x, y, z; // 三角形边     // 构造方法,同时验证边合法性     public Sanj(double a, double b, double c) throws NotSanJiaoException {         // 验证条件:边长>0 且 任意两边之>第边         if (a <= 0 || b <= 0 || c <= 0 || (a + b <= c) || (a + c <= b) || (b + c <= a)) {             throw new NotSanJiaoException("三角形的3条边长均大于0且任意2边之大于第3边才能构成三角形");         }         this.x = a;         this.y = b;         this.z = c;     }     // 计算三角形面积(海伦公式)     public double getArea() {         double p = (x + y + z) / 2;         return Math.sqrt(p * (p - x) * (p - y) * (p - z));     }     // 显示三角形信息     public void showInfo() {         System.out.println("三角形边长分别为:" + x + "," + y + "," + z);         System.out.println("三角形面积为:" + getArea());     } } // 测试 public class SanjTest {     public static void main(String[] args) {         Scanner scanner = new Scanner(System.in);         // 读取输入的边长         double a = scanner.nextDouble();         double b = scanner.nextDouble();         double c = scanner.nextDouble();         try {             Sanj sanj = new Sanj(a, b, c);             sanj.showInfo();         } catch (NotSanJiaoException e) {             System.out.println(e.getMessage());         }
最新发布
12-29
Java程序设计》课程实验指导书程序代码(答案)(实验二),个人原创,仅供参考与交流。 希望多多交流,共同进步! 实验二 Java语言基础 一、实验目的: 熟悉Java基本语法,基本数据型,各种运算符及表达式的使用,掌握运算符优先级,熟悉使用Java的选择语句,循环语句。 二、实验内容: 1.编写Java Application程序,输出1900年到2000年之间的所有润年。(闰年的判断条件:能被4整除且不能被100整除,或能被400整除); 2.编写Java Appet 程序打印 “水仙花” 数 (它的个、十、百位数字的立方的等于该数本身,如:153=1^3+5^3+3^3) 3. 编写Java Application程序,分别用do-whilefor循环计算1+1/2!+1/3!+1/4!...的前20项 、实验要: 1. 正确使用Java语言的选择语句,循环语句; 2. 调试程序、编译,运行后得到正确的结果 3.写出实验报告。要记录编译执行Java程序当中的系统错误信息提成示,并给出解决办法。 四、实验步骤: 1.编写主; 2.在static public void main(String[ ] args)方法中加入实现要功能的代码,主要步骤如下: (第一题)从1900到2000循环,按照闰年的判断条件是则输出1900年到2000年之间的所有润年。 (第二题)编写Java Applet, 在public void paint(Graphics g)方法中加入实现要功能的代码, 主要步骤是:从100到1000循环,判断每个数是否符合水仙花数的特点,是则输出之。 3.编译运行程序,观察输出结果是否正确。 五、自做实验 1. 输出100以内的所有素数。 提示: 逐个判断小于a的每个正整数x,第二重循环针对x,判断其是否是质数。 2.将所输入之正整数,以二、八、十六进制表示出来。 提示: 可写方法分别计算输出二、八、十六进制表示。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

aigo-2021

您的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值