2017-03-10 11 views
1

こんにちは、私は最初のコーディングクラスに入っています。これは私の最初のコードは数学を使用していますが、どこが間違っているのか分かりにくいです。エラーはありませんが、計算は未定義です。
3点を使って三角形の面積を求める必要があります。私はeuqationsを与えられました。私の数学に問題がありますか?非常に単純なJava

s = (side1 + side2 + side3)/2  
area = sqrt(s(s-side)(s- side2)(s-side3)) 
Side = sqrt(x1-y1)+ (x2-y2) 

助けてください、ここに私のコードは次のとおりです。

double sideOne = Math.sqrt(Math.pow((x1cr - x2cr), 2 + Math.pow((y1cr - y2cr), 2)));  
double sideTwo = Math.sqrt(Math.pow((x2cr - x3cr), 2 + Math.pow((y2cr - y3cr), 2)));  
double sideThree = Math.sqrt(Math.pow((x1cr - x3cr), 2 + Math.pow((y1cr - y3cr), 2)));  
double lSide = (sideOne + sideTwo + sideThree)/2;  
double areaTri = Math.sqrt((lSide * (lSide - sideOne) * (lSide - sideTwo) * (lSide - sideThree)));  
System.out.println("The area of your triangle is " + areaTri); 

編集:ここに私の先生が与えた例があります:

ここではサンプルの実行です:

三角形の最初の頂点(x1、y1)の座標を入力します。1.5 -3.4

Enter 9.5 -3.4

は、三角形の面積は

:4.6 5

が三角形の第三の頂点の座標(X3、Y3)を入力:三角形の第二の頂点の座標(X2、Y2) 33.6 sq cms

+0

あなたが観察した出力と予想される出力とその違いを教えてください。 –

+0

あなたはまた、あなたが使用している変数名を指定する必要があります...私はx1crがポイント1を定義するためにy1crに行くと仮定しますか? –

+0

@Maybe_Factorはい、正しい仮定です。それらはダブル入力として定義され、ユーザ入力を受け入れる – heyimakitty

答えて

3

問題は、sideOnesideTwoおよびsideThreeを計算する方法です。

私はあなたがこのようsideOneを計算すると信じて:次に、あなたのコードがどうあるべき

formula

double sideOne = Math.sqrt(Math.pow((x1cr - x2cr), 2) + Math.pow((y1cr - y2cr), 2)); 
                ^      ^
                1       2 

注式は同じですが、ブラケットの配置が異なっていること。位置2のブラケットが位置1に移動します。

sideTwosideThreeも同様の変更を行う必要があります。

0

コードとコメントを確認してください。

class Test { 

    //always post MCVE (stackoverflow.com/help/mcve) 
    public static void main(String[] args) { 

     double x1cr=1.5, y1cr=-3.4, //side one end points 
       x2cr=4.6, y2cr=5, //side two end points 
       x3cr=9.5, y3cr=-3.4; //side three end points 

     double sideOne = Math.sqrt(squareIt(x1cr, x2cr)+ squareIt(y1cr, y2cr)); 
     double sideTwo = Math.sqrt(squareIt(x2cr, x3cr) + squareIt(y2cr, y3cr)); 
     double sideThree = Math.sqrt(squareIt(x1cr, x3cr)+ squareIt(y1cr, y3cr)); 

     System.out.println(sideOne+ " "+ sideTwo+ " "+ sideThree); 

     double lSide = (sideOne + sideTwo + sideThree)/2; 
     double areaTri = Math.sqrt((lSide * (lSide - sideOne) * (lSide - sideTwo) * (lSide - sideThree))); 
     System.out.println("The area of your triangle is " + areaTri); 
    } 

    //put the repeating calculation in a function 
    //it is easy to check such function by say : 
    // System.out.println(squareIt(5., 3.)); 
    static double squareIt(Double x1, double x2) { 

     return Math.pow((x1 - x2), 2); 
    } 
} 
関連する問題