4 、(5分)异常处理设计问题

4 、(5分)异常处理设计问题

    我们能够通过海伦公式计算已知一个三角形三边长度的三角形面积,如果三角形的三边长为a,b,c,三角形的面积计算公式描述如下:

p=(a+b+c)/2 ;

S=sqrt(p*(p-a)*(p-b)*(p-c)

      要求你完成MyMath对象中的trianglearea法的实现,如果参数a,b,c的值不能构成一个三角形,使用异常进行处理,产生无效三角形异常,如果a,b,c中有负数,产生参数无效异常,根据题目要求请你完成异常类型和MyMath类型的设计。MyMath设计代码如下:

import java.util.*;
public class MyMath
{
 public static double trianglearea(double a,double b,double c)
  throws NotTriAngleException,NegativeArgementsException{
        //判定a,b,c是否全为正数

  //判定a,b,c是否能构成三角形

  //计算三角形面积
  double s;
 }
 public static void main(String[] args)
 {
  double a,b,c;
  int N;
  Scanner sc= new Scanner(System.in);
  N = sc.nextInt();
  for(int i=0;i<N;i++){
   a=sc.nextDouble();
   b=sc.nextDouble();
   c=sc.nextDouble();
   System.out.printf("%.2f\n",MyMath.trianglearea(a,b,c));
  }
 }
   
}

class NotTriAngleException extends Exception
{
}

class NegativeArgementsException extends Exception
{
}

  输入:
      输入的第一行为一个正整数N(N>0),表示以下有N行数据,每行为一个三角形边的输入信息,原则上是由空格隔开的三个浮点数,但也可能由于输入错误产生非正常情况。
  输出:
      如果某行三角形边数据能读入三个浮点数,输出方法trianglearea计算结果,保留2位小数,如果发生异常直接输出异常信息;每个三角形计算信息使用一行输出;如果某行三角形边数据读入出现问题,直接退出程序的运行。


 测试1输入:
  3
  3 4 5.0
  1 1 2
 -2 4.0 3


  测试1输出:
   6.00
   Not TriAngle
   Negative Argements


  测试2输入:    
  3
  3 4 5.0
  1a 1 2
   -2 4.0 3

  测试2输出:
     6.00

import java.util.*;
public class Main
{
    public static double trianglearea(double a,double b,double c)
            throws NotTriAngleException,NegativeArgementsException{
        //判定a,b,c是否全为正数
        //遇到异常,抛出
        if(a<=0||b<=0||c<=0)throw new NegativeArgementsException();
        //判定a,b,c是否能构成三角形
        //遇到异常,招聘
        if(a+b<=c||a+c<=b||b+c<=a)throw new NotTriAngleException();
        //计算三角形面积
        double p=(a+b+c)/2;
        double s=Math.sqrt(p*(p-a)*(p-b)*(p-c));
        return s;
    }

    public static void main(String[] args)
    {
        double a,b,c;
        int N;
        Scanner sc= new Scanner(System.in);
        N = sc.nextInt();
        for(int i=0;i<N;i++){

            try {
                a=sc.nextDouble();
                b=sc.nextDouble();
                c=sc.nextDouble();
                System.out.printf("%.2f\n",Main.trianglearea(a,b,c));
            } catch (NotTriAngleException e) {
                e.printStackTrace();
            } catch (NegativeArgementsException e) {
                e.printStackTrace();
            }catch(Exception e){
                System.exit(0);
            }
        }
    }

}

class NotTriAngleException extends Exception
{
    public void printStackTrace(){
        //printStackTrace方法重写
        System.out.println("Not TriAngle");
    }
}

class NegativeArgementsException extends Exception
{
    public void printStackTrace(){
        //printStackTrace方法重写
        System.out.println("Negative Argements");
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值