Java:异常处理海伦公式算面积问题_胖头小奶虎的博客-程序员宅基地_异常处理三角形面积

技术标签: JAVA  java  几何学  开发语言  

问题:获取用户输入的三角形的三边,计算该三角形的周长和面积,处理可能的异常。
要求:(1)定义一个TriangleException类
(2)定义一个IllegalTriangleException异常类类
(3)定义一个Test类

创建一个使用3条边长表示一个三角形的 Triangle类。
Triangle类成员及说明
类成员 说明

  • a: double -b: double. -c: double 分别表示三角形的3条边
  • Triangle(double a, double b, double c)throws IllegalTriangleException 构造方法,当不符合任意两边之和大于第三边条件时抛出 IllegalTriangleException异常

+getArea(): double
用于根据3条边长获取三角形面积的方法
+getPerimeter:double 用于根据3条边长获取三角形周长的方法

要求当用户通过 Triangle类的构造方法创建三角形对象时,若不符合“任意两边之和大于第三边”条件时抛出 IllegalTriangleException异常。

IllegalTriangleException异常类成员及说明
类成员 说明

  • a: double -b: double. -c: double 分别表示三角形的3条边
    +IllegalTriangleException(int a, int b, int c) 可以为3条边长字段赋值的、类的构造方法
    +toString():String 重写从Object类继承的 tostring方法,用于返回具体的异常信

在主方法中编写代码,接收用户输入的3条边长值,通过 try.catch语句捕获并处理 IllegalTriangleException异常,在控制台窗格显示异常信息,未发生异常时则在控制台窗格中显示该三角形的面积,周长。

代码块:

package Demo5;

public class IllegalTriangleException extends Exception{
public double a;
public double b;
public double c;
public IllegalTriangleException(double a, double b, double c) {
	super();
	this.a = a;
	this.b = b;
	this.c = c;
}
public String toString() {
	return "输入数据异常";
}
}

package Demo5;
public class TriangleExpection {
public double a;
public double b;
public double c;
public TriangleExpection(double a, double b, double c) throws IllegalTriangleException{
	if(a+b>c&&a+c>b&&b+c>a) {
	this.a = a;
	this.b = b;
	this.c = c;
	} else {
		throw new IllegalTriangleException(c, c, c);
	}	
}	
double getArea(double a, double b, double c ) {
	a=a;
	b=b;
	c=c;
	double p= (a+b+c)/2;
	System.out.println("三角形面积为");
	return Math.sqrt(p*(p-a)*(p-b)*(p-c));
}
double getPerimeter(double a, double b, double c){
	System.out.println("三角形周长为");
	return a+b+c;
}
}	

package Demo5;
import java.util.InputMismatchException;
import java.util.Scanner;
public class Test {
public static void main(String[] args) throws IllegalTriangleException{
	Scanner sc = new Scanner(System.in);
	System.out.println("分别输入a,b,c的值");
	double a,b,c;
	try {
		a=sc.nextDouble();
		b=sc.nextDouble();
		c=sc.nextDouble();
//			System.out.println(t.getArea());
		ceshi(a,b,c);
	}catch(IllegalTriangleException ex) {
		System.out.println(ex.toString());
	}catch(InputMismatchException ex) {
		System.out.println(ex.toString());
	}catch(Exception ex) {
		System.out.println(ex.toString());
	}finally {
		System.out.println("程序运行结束");
	}
}
private static void ceshi(double a, double b, double c) throws IllegalTriangleException{
	System.out.println();
	TriangleExpection t = new TriangleExpection(a, b, c);
	System.out.println(t.getArea(a, b, c));
	System.out.println(t.getPerimeter(a, b, c));
}
}

运行效果图:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_55804957/article/details/121917856

智能推荐

C# .net SQLite存取GBK格式字符串_helloKingshan的博客-程序员宅基地_c# gbk存入 sqlite

前一阵接手了一个项目,是一个读取Excel的数据,然后导出到SQLite数据库中。听起来是很简单,可是仍旧遇到了不少问题。其实困扰我好久的问题就是如何存GBK编码的字符串到SQLite中。跟我对接的Android那边需要读这个db文件,链接数据库的时候用的GBK编码,之前的导出软件是用的Delphi写的。所以我这边必须用C#存GBK。一开始我尝试了跟多次在代码中先转UTF-8到GBK格式,再存进数据

lspci grep Eth,查看Linux下的各种硬件设备是否识别或存在之用_ahxxx2的博客-程序员宅基地

背景:Linux下的硬件有很多,如何看网卡是啥样的,声卡是啥样的有几个USB口及品牌。[[email protected] htdocs]# lspci |grep USB00:03.0 USB controller: Broadcom BCM5785 [HT1000] USB (rev 01)00:03.1 USB controller: Broadcom BCM5785 [HT1000]

pytorch - connection between loss.backward() and optimizer.step()_敲代码的妹子的博客-程序员宅基地_pytorch connect

Some answers explained well, but I’d like to give a specific example to explain the mechanism.Suppose we have a function : z = 3 x^2 + y^3.The updating gradient formula of z w.r.t x and y is:initial values are x=1 and y=2.x = torch.tensor([1.0], req

pip安装第三方类库下载速度慢以及超时问题(timeout)的解决方法_程序员小老九的博客-程序员宅基地

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 ...

Unity 不规则图形点击_时光不染的博客-程序员宅基地_unity 不规则图形

不规则图形点击范围问题不规则图形代码这几天玩LOL手游,看到有个功能自定义按键位置。如下图,按键位置可以离得很近又不互相影响,划拉出来说一说常用的点击范围的问题。问题屏幕上我们看到的按钮是圆形,实际在开发中图片是方形 □,如下图如果我们直接用Button做点击,那么透明区域和非透明区域都会响应点击事件这种情况我们点击上图红框区域,有可能视觉上点击到的是A的右上,而实际触发的是B技能。这时候就需求只让事件响应圆形区域的点击UI.Image.IsRaycastLocationValid 这

随便推点

K-折交叉验证_tsinfeng的博客-程序员宅基地

K-折交叉验证(K-foldcross-validation)是指将样本集分为k份,其中k-1份作为训练数据集,而另外的1份作为验证数据集。用验证集来验证所得分类器或者回归的错误码率。一般需要循环k次,直到所有k份数据全部被选择一遍为止。<br />交叉检验的方法是<br />Cross Validation<br />Cross validation is a model evaluation method that is better thanresiduals. The pro

AttributeError: 'str' object has no attribute 'ndim'_是秀儿呀的博客-程序员宅基地

用keras作ner时,报错AttributeError: 'str' object has no attribute 'ndim',原因是在fit时,feature是语料,str类型

SQL SERVER发布与订阅 [原创]_weixin_30379973的博客-程序员宅基地

一.配置分发1.配置分发服务器,注:配置发布与订阅,连接SQLSERVER必须用服务器名登录2.配置分发3.选择分发服务器4.选择快照文件夹5.设置此文件夹的读写权限为everyone6.选择分发数据库路径7.配置分发8.配置分发9.配置分发完成二.新建发布1.新建发布2.选择发布数据库3.选择发...

简单的MediaPlayer+SurfaceView实现视频横竖屏播放_twoStepFromHell的博客-程序员宅基地_surfaceview 竖屏播放

一.概述   目前就我的认知中,Android实现视频播放的话,有2中方式,第一种是MediaPlayer+surfaceView实现,第二种是直接用VideoView来实现,当然市面上也有一些主流的视频能播放的框架,像Vitamio就非常的强大,支持多种格式的视频播放。今天着重讲的就是第一种实现方式-----------Mediaplayer+SurfaceView 二.

python画蜡烛致敬烈士_用matplotlib制作的比较满意的蜡烛图_weixin_39999859的博客-程序员宅基地

用matplotlib制作的比较满意的蜡烛图2D图形制作包, 功能强大, 习练了很久, 终于搞定了一个比较满意的脚本.特点:使用方面要非常简单绘制出来的图要非常的满意, 具有如下的特点时间和空间的比例尺需要固定, 就是说图件的大小需要依据数据的长度和价格的变动幅度自动调整, 至少时间轴上应该如此.时间轴的刻度: 对于日线图而言, 年/月/日/星期几 都应该一目了然.Y轴: 对数刻度, 10%等比刻...

Android视频通话 Java源码_little_rui的博客-程序员宅基地

最近学习Android平台下跨平台音视频通信开发,虽然网上有很多开源项目供我们参考学习,但音视频效果很一般,还有很多不稳定的因素,毕竟是开源嘛。在国内我找到了一个比较好音视频通信解决方案(百度下载官方Anychat for Android 的demo),该案例提供了纯Java语言接口供我们调用,随后我参照官方android demo程序和开发文档并结合自己的见解写了一个android音频通信软件,

推荐文章

热门文章

相关标签