java 给定三个点由三个点求三角形周长和面积

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 给定三个点由三个点求三角形周长和面积相关的知识,希望对你有一定的参考价值。

3.先创建一个Point类,然后定义Trianglele类。在Trianglele类中定义三个Point的实体来表示一个三角形的三个点,再定义一个方法setTri对这三个点进行初始化,然后定义两个方法求三角形的周长、面积。在main()中创建一个对象,求给定三点的三角形的周长、面积。
/**
*
*/
package zhecaishidi3ti;

/**
* @author Y
*
*/
class Point
public int x, y;
public Point(int a, int b)
x = a;
y = b;

/**
* @param args
*/

public static class Trianglele
double x1, x2, x3;
public void setTri()

Point A = new Point(0, 0);
Point B = new Point(3, 0);
Point C = new Point(0, 4);
x1 = Math.hypot((A.x - B.x), (A.y - B.y));
x2 = Math.hypot((B.x - C.x), (B.y - C.y));
x3 = Math.hypot((C.x - A.x), (C.y - A.y));
System.out.println("周长是"+x1 + x2 + x3);


public double getlength()

return x1+x2+x3;

public double getMianJi()
double b, c;

b = (x1+x2+x3) /2;
c =Math.sqrt(b*(b-x1)*(b-x2)*(b-x3));
return c;



/**
* @param args
*/
public static void main(String[] args)
// TODO 自动生成的方法存根
Trianglele triangle=new Trianglele();
System.out.println("周长: " + triangle.getlength());
System.out.println("面积: " + triangle.getMianJi());




这段代码为什么执行出来结果是周长0面积0

参考技术A 你并没有调用你在Trianglele类中定义的setTri()这个方法啊,也就是x1,x2,x3这三个double类型的属性都是默认值,也就是0,自然算出来的结果是0了 参考技术B triangle.setTri();
加上这句在执行就有了追问

好的 谢谢 我这个应该没有用构造函数吧

追答

public Trianglele()


把你setTri()这堆代码写到这里来。就可以了。

追问

我已经写进去了 可以运行 我这段代码没有用构造函数吧

追答

public Trianglele()

这个就是构造啊。

追问

如果不用构造函数该怎么改

追答

你啥也不用改,就没用构造函数。最开始那个版本。

追问

好的 谢谢了

本回答被提问者采纳
参考技术C setTri 这是初始化方法,没有被调用 参考技术D ???

976. 三角形的最大周长

给定由一些正数(代表长度)组成的数组 A,返回由其中三个长度组成的、面积不为零的三角形的最大周长。

如果不能形成任何面积不为零的三角形,返回 0

 

示例 1:

输入:[2,1,2]
输出:5

示例 2:

输入:[1,2,1]
输出:0

示例 3:

输入:[3,2,3,4]
输出:10

示例 4:

输入:[3,6,2,3]
输出:8

 

提示:

  1. 3 <= A.length <= 10000
  2. 1 <= A[i] <= 10^6

思路

不失一般性的,我们假设三角形的边长满足 a leq b leq cabc。那么这三条边组成三角形的面积非零的充分必要条件是 a + b > ca+b>c。

再假设我们已经知道 cc 的长度了,我们没有理由不从数组中选择尽可能大的 aa与 bb。因为当且仅当 a + b > ca+b>c 的时候,它们才能组成一个三角形。

算法

基于这种想法,一个简单的算法就呼之欲出:排序数组。对于数组内任意的 cc,我们选择满足条件的最大的 a leq b leq cabc,也就是大到小排序,位于 cc 后面的两个元素。 从大到小枚举 cc,如果能组成三角形的话,我们就返回答案。

int largestPerimeter(vector<int>& A){
    sort(A.begin(),A.end());
    for(int i = A.size()-3;i>=0;i--){
        if(A[i]+A[i+1]>A[i+2])
            return A[i]+A[i+1]+A[i+2];
    }
    return 0;
}

 

以上是关于java 给定三个点由三个点求三角形周长和面积的主要内容,如果未能解决你的问题,请参考以下文章

C#编程 已知三个点求组成三角形的周长和面积

java编程求三角形面积

LeetCode976 三角形的最大周长(Java排序简单应用-防自闭题)

三角形的最大周长

979. 三角形的最大周长

976. 三角形的最大周长