2012-10-11 65 views
1

我很困惑與參與這一問題的技術術語:實現方法的相應

鑑於三條直線A,B &℃。他們將能夠形成 三角形提供的任何兩行的那筆總是比 第三行的情況下(即A + B> C和B + C> A和A + C

b)中。編寫一個Java類三角有以下幾點:

Attributes: length of the three sides of the triangle 
Behaviour: 
  • 構造,設置了三面傳遞的值的長度,構造函數應該拋出一個InvalidValueException 對象時的值不能形成三角形。
    • 一個findArea()方法使用公式面積= 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"); 
    } 
} 

我想知道的不是我錯過了一些東西(如果我錯過了某些東西,請讓我知道),但問這裏的主要目的是,這是回答這個問題的正確方法嗎?

+1

「我很困惑與技術術語」,你可以指定哪些部分? – UmNyobe

+1

[How to define attributes?](http://stackoverflow.com/questions/12835537/how-to-define-attributes) – maba

+0

首先,也許你錯過了標籤「家庭作業」? – Kent

回答

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; 
    } 
} 
+0

中實施了正確的公式,噢,明白了! +1 – noobprogrammer

+0

所以你的意思是說我的所有getter和setter應該在構造函數之外? – noobprogrammer

+0

@noobprogrammer你不能讓你的getter和setter在你的構造函數中。 – PermGenError

0

這似乎是非常多的畢達哥拉斯定理。 答案是(SIDE1 *側面2)*(*側面2側面2)=(SIDE3 * SIDE3) 如果雙方是會給你所有有效的三角形一樣..

這是相當多的功課代碼,但如何理解它的工作是基本的。

+0

lol這不是數學論壇花花公子。我已經在我的代碼 – noobprogrammer

1

你的構造應該是這樣的:

public className(int side1, int side 2, int side3) throws yourException { 
     //initialize your sides here and call your validation method here 
}