1

我对这个问题所涉及的技术术语感到困惑:

给定三条直线a,b和c。只要任何两条线的总和总是大于第三条线(即 a + b > c 和 b + c > a 和 a + c),他们将能够形成一个三角形

乙)。使用以下内容编写 Java 类 Triangle:

Attributes: length of the three sides of the triangle 
Behaviour:
  • 将三个边的长度设置为传入的值的构造函数。当这些值不能形成三角形时,构造函数应该抛出一个 InvalidValueException 对象。
    • findArea() 方法使用公式 area = a +b+c 计算三角形对象的面积

我想出的代码是这样的:

package question3_test;

import java.awt.event.*;
import java.math.*;

public class Triangle_getvalues 
{


    private int side1, side2, side3;
    private double area;
    private String message;


    public  int getSide1()
    {
        return side1;
    }

    public void setSide1(int s1)
    {
        side1 = s1;
    }

    public  int getSide2()
    {
        return side2;
    }

    public void setSide2(int s2)
    {
        side2 = s2;
    }

    public  int getSide3()
    {
        return side3;
    }

    public void setSide3(int s3)
    {
        side3 = s3;
    }

    public double findArea(int side_1, int side_2, int side_3)throws InvalidValueException 
    {
        int s, a, b,c;
        a = side_1;
        b = side_2;
        c = side_3;
        s = ((a + b + c)/2);
        area = Math.sqrt(s*(s-a)*(s-b)*(s-c));
        //area =
        return area;
    }



public void validateTriangle(int sidea, int sideb, int sidec) throws InvalidValueException
    {
        try
        {
        if((sidea + sideb > sidec)||(sideb + sidec > sidea)||(sidea + sidec > sideb))
        {
            findArea(side1,side2,side3);
        }
        }
        catch(InvalidValueException excep)
                {
                    message = excep.getMessage();
                }
    }

}

class InvalidValueException extends Exception
{
    public InvalidValueException()
    {
        super("These values cannot form a valid triangle");
    }
}

我想知道的不是我遗漏了什么(如果我遗漏了什么,请告诉我),而是在这里问的主要目的是,这是回答这个问题的正确方法吗?

4

3 回答 3

3

你有正确的想法。你只是没有组合你的代码来匹配你的任务。

将三个边的长度设置为传入的值的构造函数。当这些值不能形成三角形时,构造函数应该抛出一个 InvalidValueException 对象。

类构造函数看起来像这样。

public Triangle_getvalues(int a, int b, int c) throws InvalidValueException {
    validateTriangle(a, b, c);
    setSide1(a);
    setSide2(b);
    setSide3(c);
}

您的 validateTriangle 方法不应尝试同时抛出 InvalidValueException 并捕获 InvalidValueException。选择一个或另一个。

您的 validateTriangle 方法不需要调用或执行 findArea 方法。您只需要确定输入长度是否构成有效三角形。

这是它应该如何工作的:

 public void validateTriangle(int sidea, int sideb, int sidec) 
     throws InvalidValueException
 {
    if ((sidea + sideb > sidec) || (sideb + sidec > sidea)
        || (sidea + sidec > sideb))
    {

    } else {
        throw new InvalidValueException;
    }
}
于 2012-10-11T13:22:32.117 回答
1

你的构造函数应该是这样的:

public className(int side1, int side 2, int side3) throws yourException {
      //initialize your sides here and call your validation method here
}
于 2012-10-11T13:22:57.897 回答
0

这似乎很像毕达哥拉斯定理。答案是 (side1*side2)*(side2*side2) = (side3*side3) 如果每一边都是相同的,这会给你所有有效的三角形..

这几乎是家庭作业代码,但了解它的工作原理是基本的。

于 2012-10-11T13:18:23.937 回答