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



    }
}

Java程序设计》课程实验指导书程序代码(答案)(实验五:Java的异常处理),个人原创,仅供参考与交流。 希望多多交流,共同进步! 实验五 Java的异常处理 一、实验目的: 理解 java 语言中独特的异常处理机制; 掌握异常处理方法; 正确地使用捕获异常声明抛弃异常的两种异常处理的方法; 了解自定义异常类的使用; 理解抛出异常声明抛出异常的区别与联系; 二、实验内容: 1. 从命令行得到5个整数,放入一整型数组,然后打印输出,要:如果输入数据为整数,要捕获Integer.parseInt()产生的异常,显示“请输入整数”,捕获输入参数足5个的异常(数组越界)显示“请输入至少5个整数”。 2.写一个方法void sanjiao(int a,int b,int c),判断三个参数是否能构成一个三角形,如果能则抛出异常IllegalArgumentException,显示异常信息a,b,c+”能构成三角形”,如果可以构成则显示三角形三个边长,在主方法中得到命令行输入的三个整数,调用此方法,并捕获异常。 3.自定义类Sanj,其中有成员 x,y,z,作为边长构造方法Sanj(a,b,c)分别给x,y,z赋值,方法面积getArea显示三角形信息(三个边长)showInfo,这2方法中当三条能构成一个三角形时要抛出自定义异常NotSanjiaoException,否则显示正确信息。在另外一个类中的主方法中构造一个Sanj对象(为命令行输入的三个整数)显示三角形信息面积,要捕获异常。 、实验要: 1. 通过实验掌握捕获异常声明抛弃异常的两种异常处理的方法2. 程序必须能够捕获Integer.parseInt()产生的异常并作相应的处理; 3. 程序必须能够将处理的相应的信息输出出来; 4. 写出实验报告。要记录编译执行Java程序当中的系统错误信息提材示,并给出解决办法。(附运行界面、源代码)。 四、实验步骤: 1. (第1题) 使用try…..catch…. finally语句对Integer.parseInt()产生的异常进行捕获处理; 2. (2) 定义方法void sanjiao(int a,int b,int c)中,符合条件则抛出异常(if a+b<=c(或a+c<=b,b+c<=a) then throw new IllegalArgumentException(),),再定义main方法,调用此方法,用try…..catch…. finally语句并捕获异常; 3. (第3题) 定义三角形类及相应的方法, 在定义的方法中对符合条件则抛出异常(如上题) ,再定义main方法,对正确的数据输出正确信息,否则捕获异常; 五、自做实验 1.参考下面的程序,试修改程序,捕获相关异常,使得程序能正常运行。[提示:用错误数据测试,即可得到异常类名,运行时主方法参数输入 abc 测试] public class StringIndexOutOf{ public static void main(String args[]){ System.out.println("字符串索引越界异常"); String str=args[0]; System.out.println(“第四个字符为 ”+str.charAt(3)); int aa=Integer.parseInt(args[0]); System.out.println(“平方为 ”+aa*aa); } }
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.将所输入之正整数,以二、八、十六进制表示出来。 提示: 可写三个方法分别计算输出二、八、十六进制表示。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值