1

私はこの質問に関係した専門用語と混同しています:

3本の直線a、b、cが与えられます。2本の線の合計が常に3本目の線よりも大きい場合(つまり、a +b>cおよびb+c>aおよびa+c)、三角形を形成できます。

b)。次のようにJavaクラスTriangleを記述します。

Attributes: length of the three sides of the triangle 
Behaviour:
  • 渡された値に3辺の長さを設定するコンストラクター。値が三角形を形成できない場合、コンストラクターはInvalidValueExceptionオブジェクトをスローする必要があります。
    • 数式area=a + b + cを使用してTriangleオブジェクトの面積を計算するfindArea()メソッド

私が思いついたコードはこれです:

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

あなたは正しい考えを持っています。割り当てに一致するようにコードを組み合わせているだけではありません。

渡された値に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 に答える