缺等腰三角形

如果这个类是final的,我觉得整体思路上没什么问题.有几个细节再把握下

1.将度数也设为double,设想你new时传递参数是写90度方便,还是写90f度方便.

2.构造函数太独立了,各个构造函数没有联系性。比如说任意三边如果能判定是正三角就可以直接调用正三角的构造函数...

3.感觉这个类如果写get方法还好,如果写set方法有点麻烦,传进参数时得重新判定此参数和其他两个参数构成三角形的条件能不能成立,建议单独写个异常类抛出异常

4.这个类的重点主要是把握住传递进去的参数能不能构成三角形,还是建议单独写个判断是不是成立的异常类。

这是我以前做的求三角形的面积  Point类是一个点的坐标类

可以不用判断是什么三角形,直接求面积和周长

package shape;

public class Triangle {

/**

* point1,point2,point3为三角形的三点

*/

private Point point1;

private Point point2;

private Point point3;

public Triangle() {

super();

}

/**

* 构造方法

* @param point1 Point型

* @param point2 Point型

* @param point3 Point型

*/

public Triangle(Point point1, Point point2, Point point3) {

super();

this.point1 = point1;

this.point2 = point2;

this.point3 = point3;

}

public Point getPoint1() {

return point1;

}

public void setPoint1(Point point1) {

this.point1 = point1;

}

public Point getPoint2() {

return point2;

}

public void setPoint2(Point point2) {

this.point2 = point2;

}

public Point getPoint3() {

return point3;

}

public void setPoint3(Point point3) {

this.point3 = point3;

}

/**

* 求三角形一条边A

* @return double型

*/

private double triangleA(){

return Math.hypot(point1.getCoordinate_x()-point2.getCoordinate_x(),point1.getCoordinate_y()-point2.getCoordinate_y());

}

/**

* 求三角形一条边B

* @return double型

*/

private double triangleB(){

return Math.hypot(point1.getCoordinate_x()-point3.getCoordinate_x(),point1.getCoordinate_y()-point3.getCoordinate_y());

}

/**

* 求三角形一条边C

* @return double型

*/

private double triangleC(){

return Math.hypot(point2.getCoordinate_x()-point3.getCoordinate_x(),point2.getCoordinate_y()-point3.getCoordinate_y());

}

/**

* 判断这三点是否可以构成三角形

* @return boolean型

*/

private boolean isTriangle(){

if(Math.abs(this.triangleA()+this.triangleB()) > this.triangleC() && Math.abs(this.triangleA()-this.triangleB())

return true;

}

else{

return false;

}

}

/**

* 如果可以构成三角形求三角形的面积

* 不可以构成三角形return 0;

* @return double型

*/

public double countArea(){

if(!this.isTriangle()){

return 0;

}

else{

double p = (this.triangleA() + this.triangleB() + this.triangleC())/2;

return Math.sqrt(p * (p - this.triangleA()) * (p - this.triangleB()) * (p - this.triangleC()));

}

}

public static void main(String[] args){

/*Point point1 = new Point(1,2);

Point point2 = new Point(1,3);

Point point3 = new Point(4,3);

Triangle triangle = new Triangle(point1,point2,point3);

System.out.println(triangle.countArea());

*/Point point1 = new Point(0,0);

Point point2 = new Point(0,4);

Point point3 = new Point(3,0);

Triangle triangle = new Triangle(point1,point2,point3);

System.out.println(triangle.countArea());

}

}

求面积用海轮公式:

已知三角形三边长为a,b,c.

周长的一半p = (a+b+c)/2

三角形面积=sqrt(p*(p-a)*(p-b)*(p-c))

学习了!

引用 4 楼 sagegz 的回复:求面积用海轮公式:

已知三角形三边长为a,b,c.

周长的一半p = (a+b+c)/2

三角形面积=sqrt(p*(p-a)*(p-b)*(p-c))

这个公式没见过 用过

学习

顶,好东西

不错。。。MARK...学习。。。。

4.是不是我的这个类根本的思路就不对?

不能说不对,不过这个类看上去的确很“死板”。

风格属于典型的结构化编程产物。

功能不够灵活。

你可以想象你的桌面上现在有一个“智能”的三角形“对象”的“实例”。

你可以改变它的某些属性,包括但不限于三条边的长度,三个角的角度,周长属性,面积属性。

每当你改变其中的某个属性,桌面上的三角形就会自动调整。

海伦公式也好,正余弦定理也罢,编写一个auto_update过程,再只要GET/SET上述属性调用即可。

up

貌似构造函数中有3个都是参数个数和类型完全相同……

用海伦公式求面积最简单。

这样全是全,可能用在教学三角形上挺好。实际用不必这样,根据实际应用可以更简单,如求面积海伦公式足以。

其实针对楼主的这个问题,可以简单化。

比如归纳为已知三个边的长度,可以唯一确定一个三角形(三角形全等定理)。所以你唯一需要判断的就是这三个边能否确定一个三角形。可根据两边之和大于第三边;两边之后小于第三边来确定。

然后剩下的就是海伦定理求面积,已经三边相加求周长。

所以不用搞得那么复杂,管它什么等腰还是等边。

float没有问题,边和角都是实数集合。

你的计算处理都在构造函数里完成了,还设置set方法有什么用?

我觉得楼主可以对整体设计改一下,用一个abstract类做父类,其余的五个做子类继承。还有最好把计算处理的代码从构造函数里分离出来另做一个函数。

学习

学习

引用 4 楼 sagegz 的回复:求面积用海轮公式:

已知三角形三边长为a,b,c.

周长的一半p = (a+b+c)/2

三角形面积=sqrt(p*(p-a)*(p-b)*(p-c))

对就是这个 初中就学了忘了

学习

学习

我觉得,如果你这个三角形是经常变的话,那么它的成员不需要那么多;

正如你写的构造函数一样,可以只要三边,或者两边及夹角就好了(有了些条件,三角形就唯一确定了)。

这样的话,需要做的就是(以三边为例):

1. 写构造的时候要把不是以三边为参数的构造函数把三边计算出来

2. 写出getter时,不是取三边的话,都要用运算,如取周长就返回a+b+c

3. 写setter的时候,如是允许set角度,也是要把变化的边计算出来设回去

...

1、构造函数应该要能够检查不可能的条件,并抛出异常。这个前面已经有人说了

2、成员的数量,一般只要保存3条边的长度就可以确定三角形的属性了,不需要保存角度信息。在数据量的应用中,可以用时间来换取空间。lz可以权衡取舍

3、如果是我来做这个class,我会做成只有getter,没有setter,三角形的属性,只能读,不能改,这样可以简化类的定义。可以参考字符串类的做法来实现属性的变化:obj=obj.modify(),函数复杂根据变化的内容,重新构造一个对象并返回,而不是直接在原对象上修改

做个记录!!!

谢谢楼主啊,这个刚好是我们今天的作业

asdfasf

学习了

太长了,不想看。

虽然目前对我没用,但是我还是收藏下

mark

需要写这么多吗?搞笑

看过。。学习。。。

留个记录

有点难度啊

有意思!不过都是c语言的不懂哈

该回复于2009-06-04 11:10:07被版主删除

up

tou tong

写的不错,jf

其实压根没有这么麻烦....

学习了,真的很不错

很不错了啦

围观,看起来不错,支持楼主

不错

求面积用海轮公式:

已知三角形三边长为a,b,c.

周长的一半p = (a+b+c)/2

三角形面积=sqrt(p*(p-a)*(p-b)*(p-c))

这个方法更实用一点,当然前提是这个是三角形,要是连三角形都不是那么(a+b>=c||a-b<=c)

引用 9 楼 xdop 的回复:4.是不是我的这个类根本的思路就不对?

不能说不对,不过这个类看上去的确很“死板”。

风格属于典型的结构化编程产物。

功能不够灵活。

你可以想象你的桌面上现在有一个“智能”的三角形“对象”的“实例”。

你可以改变它的某些属性,包括但不限于三条边的长度,三个角的角度,周长属性,面积属性。

每当你改变其中的某个属性,桌面上的三角形就会自动调整。

海伦公式也好,正余弦定理也罢,编写一个auto_…

我支持,面向对象的方法不应该像lz方法。。

好   谢谢楼主分享

1)缺少等腰三角形的构造方法;

2)其中2和4可以合并成一个方法,在方法内部判断这个角度的值;

3)3中应该加入判断三条边是否可以构成三角形;

已经是一个三角形了,怎么能 set 其中的一个参数呢?

不管把三边中的一边,还是三角中的一角设成其他的值,都无法再构成三角形了!

边和角在数学意义上来说是不同的类型,而你只是仅仅采用 double 和 float 来分开说明,

我认为在面向对象的意义上来说是说不过去的。

可以定义一个 Line 类和 Angle 类分别表示边和角。

受教了!

用java计算三角形周长_三角形求周长和面积完整的解决方案相关推荐

  1. java形状类_[转载]JAVA 设计一个形状类Shape 求周长和面积

    设计一个形状类Shape,方法:求周长和求面积 形状类的子类:Rect(矩形),Circle(圆形) Rect类的子类:Square(正方形) 不同的子类会有不同的计算周长和面积的方法 创建三个不同的 ...

  2. java计算时间差距_硬计算和软计算之间的差异

    java计算时间差距 什么是计算? (What is Computing?) The process of accomplishing a particular task with the help ...

  3. c语言求圆的面积和周长(c语言求圆的面积和周长,半径为5)

    怎么用c语言计算圆周长和面积 用c语言计算圆周长和面积编程有两种. #include #define PI 3.1415926 int main(){ double r,l,s; printf(&qu ...

  4. java计算何时赶超_网上说 Java 的性能已经达到甚至超过 C++,是真的吗?

    求一个完成中值滤波的纯JAVA代码.我手里正好有一个C++的中值滤波代码,想对比下两者究竟差距多大. @圆胖肿 可否写一个JAVA程序来佐证下你的观点呢? 我这面的C++代码,对一张5184*3456 ...

  5. java计算筛子概率_剑指Offer解题报告(Java版)——n个骰子的点数 43

    问题 n个骰子朝上的数之和为s,求s的所有可能以及概率 分析问题 如果是用笨方法,一般人最开始都会想到笨方法,那就是枚举法 举个例子,比如两个骰子,第一个骰子的结果为1,2,3,4,5,6,两个骰子的 ...

  6. java 计算移动平均线_基于Java语言开发的个性化股票分析技术:移动平均线(MA)...

    基于Java语言开发的个性化股票分析技术:移动平均线(MA) 基于 Java 语言开发的个性化股票分析技术:移动平均线(MA)移动平均线(MA)是以道·琼斯的"平均成本概念"为理论 ...

  7. java计算圆锥体积_六年级:美妙数学之“球的体积计算”(0430六)

    美妙数学天天见,每天进步一点点.亲爱的小朋友,你好,我是朱乐平名师工作站的叶学品老师.今天向你介绍球的体积计算. 同学们,我们学过求一个物体的体积的一般方法是排水法.同学们肯定很好奇,球体能不能和圆柱 ...

  8. java闹钟程序声音_跪求高手帮忙写一个JAVA手机闹钟程序 实现添加铃声和设置多闹钟...

    展开全部 import java.util.*; import java.awt.*; import java.applet.*; import java.text.*; public class A ...

  9. java计算器 运算符优先级_跪求大神帮忙,怎样在java 计算器中实现,四则运算优先级;...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 代码如下,跪求大神补充 import java.awt.*; import java.awt.event.*; import java.awt.image ...

  10. java中隐函数求导法则_隐函数求导的三种方法

    this.p={ m:2, b:2, loftPermalink:'', id:'fks_085075084086088070081083074065081087082066093087080', b ...

最新文章

  1. redis在微服务领域的贡献
  2. 静态方法、类方法、属性方法
  3. c++语言中如何写入文件,C++:在多线程程序中写入文件
  4. python基本使用-Python 应该怎么去练习和使用?
  5. 原始Junit测试Spring的问题
  6. jQuery自适应倒计时插件
  7. 查看PLC IP 端口_详解S7-1500的以太网通信数据类型:TCON_IP_v4
  8. 纯手写实现HashMap
  9. 导入其他用户的EFS证书
  10. 基于Android的小巫新闻客户端开发系列教程
  11. Internet信息服务(IIS)管理器--IIS部署发布网站
  12. vba手机号码归属_手机号码归属地查询
  13. Python地理数据处理 三:矢量数据的读写(一)
  14. 企业为什么要选择阿里云国际版上云?
  15. JavaScript parseInt和parseFloat用法
  16. 多线程--优先队列PriorityBlockingQueue
  17. ffmpeg提取音频文件命令并转化成pcm格式
  18. 花店商城Flower Shop网站前端HTML页面模板源码
  19. iOS小技能: 曲线图(例子:商品销售曲线图)
  20. 100亿美金打造韦伯望远镜,为什么能够揭示宇宙之初?

热门文章

  1. 【unity3d】复刻死亡之书自动设置摄像机景深
  2. 20190905层析分析法matlab,未通过一致性检验时,重新构造判断矩阵再计算
  3. 企业微信第三方应用开发
  4. 美团后端一二面c++
  5. 【毕业设计/课程设计】基于python的微信公众平台机器人的设计与实现
  6. 【MISC怼题入门系列】BUU-MISC-page2
  7. Python 字符串
  8. java面试英语自我介绍_java英语面试自我介绍
  9. 使用cmd查看电脑显卡的信息
  10. 如何准备全国计算机二级Python,二级Python考试技巧