学习内容:以点类 Point 及平面图形类 Plane 为基础设计三角形类 Triangle

代码示例:

import java.util.Scanner;

class Point{
private double x;
private double y;
public Point(double x,double y) {
this.x=x;
this.y=y;
System.out.println("Point Constructor run");
}
public void setX(double x) {//设置x坐标
this.x=x;
}
public final double getX(){//返回x坐标
return x;
}
public void setY(double y) {//设置y坐标
this.y=y;
}
public final double getY(){//返回y坐标
return y;
}
public void show() {//显示点的坐标
System.out.print("Point(X="+x+",Y="+y+")");
}
public double dis(Point p)
{
double _x = Math.abs(this.x - p.x);
double _y = Math.abs(this.y - p.y);
return Math.sqrt(_x*_x+_y*_y);
}
}
abstract class Plane{//抽象类Plane
double length() {
return 0;
}
double area() {
return 0;
}
}
public class Triangle extends Plane {

private Point a;
private Point b;
private Point c;
public Triangle(final Point a, final Point b, final Point c) {
this.a=a;
this.b=b;
this.c=c;
System.out.println("Triangle Constructorrun");
}
public void setA(final Point a) {
this.a=a;
}
public Point getA() {
return a;
}
public void setB(final Point b) {
this.b=b;
}
public Point getB() {
return b;
}
public void setC(final Point c) {
this.c=c;
}
public Point getC() {
return c;
}
public final void show() {
System.out.print("Triangle(A=");
a.show();
System.out.print(",B=");
b.show();
System.out.print(",C=");
c.show();
}
final double area() {
double l1, l2, l3,s;
l1 = a.dis(b);
l2 = a.dis(c);
l3 = b.dis(c);
s = (l1 + l2 + l3) / 2;
double area=Math.sqrt(s * (s - l1) * (s - l2) * (s - l3));
System.out.println("Area="+area);
return 0;
}
final double length() {
double l1=a.dis(b);
double l2=a.dis(c);
double l3=b.dis(c);
double length=l1+l2+l3;
System.out.println("length="+length);
return 0;
}
public static void main(String[] args) {
double x,y;
Point p1=new Point(0, 0);
Point p2=new Point(1, 1);
Point p3=new Point(2, 2);
Triangle t1=new Triangle(p1, p1, p1);
Triangle t2=t1;
t1.show();
System.out.println();//换行
t1.area();
t1.length();
Scanner sc=new Scanner(System.in);
System.out.println("请输入x,y:");
x=sc.nextDouble();
y=sc.nextDouble();
p1.setX(x);
p1.setY(y);
t2.setA(p1);
t2.setB(p2);
t2.setC(p3);
t2.show();
System.out.println();
t2.area();
t2.length();

}

}

运行截图:

遇到的问题:面积函数采用“return Math.sqrt(s * (s - l1) * (s - l2) * (s - l3));”的形式无法输出面积

解决方法:设置变量area,使area=Math.sqrt(s * (s - l1) * (s - l2) * (s - l3));输出area,返回值设为0

明天任务:以圆类 Circle 及立体图形类 Solid 为基础设计球类 Sphere

以点类 Point 及平面图形类 Plane 为基础设计三角形类 Triangle的更多相关文章

  1. 以点类 Point 及平面图形类 Plane 为基础设计圆类 Circle

    学习内容:以点类 Point 及平面图形类 Plane 为基础设计圆类 Circle 代码示例: import java.util.Scanner; class Point2{ private dou ...

  2. 以圆类 Circle 及立体图形类 Solid 为基础设计圆锥类 Cone

    学习内容:以圆类 Circle 及立体图形类 Solid 为基础设计圆锥类 Cone 代码示例: import java.util.Scanner; class Point4{ private dou ...

  3. 以圆类 Circle 及立体图形类 Solid 为基础设计圆柱类 Cylinder

    学习内容:以圆类 Circle 及立体图形类 Solid 为基础设计圆柱类 Cylinder 代码示例: import java.util.Scanner;class Point3{ private ...

  4. 以圆类 Circle 及立体图形类 Solid 为基础设计球类 Sphere

    学习内容:以圆类 Circle 及立体图形类 Solid 为基础设计球类 Sphere 代码示例: package 实验三; import java.util.Scanner; class Point ...

  5. 17 任务调度相关类综述——Live555源码阅读(一)任务调度相关类

    这是Live555源码阅读的第二部分,包括了任务调度相关的三个类.任务调度是Live555源码中很重要的部分. 本文由乌合之众 lym瞎编,欢迎转载 http://www.cnblogs.com/ol ...

  6. (转)c++类的成员函数存储方式(是否属于类的对象)---一道面试题引发的思考

    昨天去面试一家公司,面试题中有一个题,自己没弄清楚,先记录如下: class D { public: void printA() { cout<<"printA"< ...

  7. 微软在 .NET 3.5 新增了一个 HashSet 类,在 .NET 4 新增了一个 SortedSet 类,本文介绍他们的特性,并比较他们的异同。

    微软在 .NET 3.5 新增了一个 HashSet 类,在 .NET 4 新增了一个 SortedSet 类,本文介绍他们的特性,并比较他们的异同. .NET Collection 函数库的 Has ...

  8. 基类中定义的虚函数在派生类中重新定义时,其函数原型,包括返回类型、函数名、参数个数、参数类型及参数的先后顺序,都必须与基类中的原型完全相同 but------> 可以返回派生类对象的引用或指针

      您查询的关键词是:c++primer习题15.25 以下是该网页在北京时间 2016年07月15日 02:57:08 的快照: 如果打开速度慢,可以尝试快速版:如果想更新或删除快照,可以投诉快照. ...

  9. 【Quick-COCOS2D-X 3.3 怎样绑定自己定义类至Lua之三】动手绑定自己定义类至Lua

        查看[Quick-COCOS2D-X 3.3 怎样绑定自己定义类至Lua之二]新建项目中配制环境,我们完美的在新建项目中完毕了绑定须要的环境,接下来才是最关健的一步.绑定自己定义C++类至Lu ...

随机推荐

  1. 纯干货数学推导_傅里叶级数与傅里叶变换_Part3_周期为2L的函数展开

  2. canvas —— globalCompositeOperation

    globalCompositeOperation 属性设置或返回如何将一个源(新的)图像绘制到目标(已有)的图像上. 源图像 = 您打算放置到画布上的绘图. 目标图像 = 您已经放置在画布上的绘图. ...

  3. 让子弹飞,零成本让你的网站更快一点,boxopened http/3 (QUIC) 协议实战

    最近HTTP-over-QUIC 协议被正式命名为 HTTP/3,协议带来的最大改变是协议底层将采用UDP协议,而不再是TCP协议,这样的好处吗,就是更低时延,更好的拥塞控制,更精确的RTT时间,更高 ...

  4. java中请给出例子程序:找出两个数的最大公约数和最小公倍数

    9.2 找出12和8的最大公约数和最小公倍数.     public class Test {     public static void main(String[] args) {         ...

  5. jboss7学习2-jboss7入门(端口和访问的ip问题)

    1.下载地址: http://www.jboss.org/jbossas/downloads ,下载Certified Java EE 6 Full Profile版本. 2.解压 jboss-as- ...

  6. 调试了一个早上, 定位了一个chrome的新问题, 新版chrome 不能有效的追踪客户来源Referer了

  7. 各系统升级openssh

    修订号: [V1.0] 修订人: [陈土锋] 修订日期: [2019.06.04] 前言 该文档只适用用于服务器Redhat,centos,Ubuntu和suse系统的openssh升级.需要注意必须 ...

  8. 演示默认学习用户scott,默认密码是tiger

    默认学习用户scott,默认密码是tiger oracle@prd:/home/oracle$sqlplus /nolog SQL> conn scott/tiger ERROR: ORA-28 ...

  9. maven打包jar到本地仓库

    1.执行如下命令 mvn install:install-file -Dfile=guava-28.2-jre.jar -DgroupId=com.google.guava -DartifactId= ...

  10. [已解决] npm ERR! code EINVALIDPACKAGENAME Invalid package name "": name cannot start with an underscore;

    打开 cmd 输入 `npm update -g` 等待更新完成即可