学习内容:以点类 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. Altium Designer 开始一个项目

    通常一个嵌入式开发都需要一个开发板,这就涉及到原理图设计和PCB设计等流程.目前比较主流的设计软件当属Altium Designer了,于是便向写一个关于这方面的专题,也好总结一下,省得以后忘记. A ...

  2. 《深入理解ES6》笔记—— JavaScript中的类class(9)

    ES5中的近类结构 ES5以及之前的版本,没有类的概念,但是聪明的JavaScript开发者,为了实现面向对象,创建了特殊的近类结构. ES5中创建类的方法:新建一个构造函数,定义一个方法并且赋值给构 ...

  3. 人机交互大作业---C#WinForm酒店预订系统(纯界面)

    登录: 所有界面: 源代码:最近较忙,后续会上传至github 材料参考:扬中菲尔斯金陵大酒店

  4. Node自动重启工具 nodemon

    为什么要使用 在编写调试Node.js项目,修改代码后,需要频繁的手动close掉,然后再重新启动,非常繁琐.现在,我们可以使用nodemon这个工具,它的作用是监听代码文件的变动,当代码改变之后,自 ...

  5. JavaScript操作checkbox复选框

    运行效果: 源代码: 1 <!DOCTYPE html> 2 <html lang="zh"> 3 <head> 4 <meta char ...

  6. webpack的安装 以及 问题 以及 作用

    参考链接: https://blog.csdn.net/Rnger/article/details/81086938     https://blog.csdn.net/qq_38111015/art ...

  7. HTTP长连接和短连接及应用情景

    HTTP短连接 HTTP/1.0中默认使用短连接, 客户端和服务器进行一次HTTP操作, 就需要建立一次连接, 任务结束连接也关闭. 当客户端浏览器访问的web网页中包含其他的web资源时, 每遇到一 ...

  8. spring-基于xml的aop开发-快速入门

    1.导入aop的相关坐标 <dependency> <groupId>org.springframework</groupId> <artifactId> ...

  9. 搭建MySQL集群-注意版本

    系统环境采样(来自其他机器,直接copy过来的,在安装的机器上,按照步骤查看即可,当然这些还不够实际,后续补充) 检查系统内是否有其他mysql rpm -qa | grep mysql 是否存在my ...

  10. Selenium3自动化测试【27】Frame的操作

    本篇文章内容摘要 " 讲解Python3+Selenium3如何处理Frame窗体" 同步视频知识与系列知识内容,可关注:[公众号]:柒哥测试:[WX]:Lee-890;[视频号] ...