3

私のプログラムのこのビットは、余弦定理を使用してbottomAngleを計算することになっています。

public double bottomAngle() {

        topAngleinRadians = Math.toRadians(topAngle) ;

        return (Math.cos(topAngleinRadians)(bottomAngle() = ladderLength^2 + floorLength^2 - verticalHeight^2) / 2 * ladderLength * floorLength) ;
        }

生成されたエラー: ここに画像の説明を入力してください

これが私のエラーのリストですが、数式の何が問題なのか理解できません。verticalHeight、ladderLengthなどのすべてのメソッドは、他のメソッドでも完全に機能します。私がこの式を置く方法に何か問題があります。手伝ってくれませんか。

4

5 に答える 5

5

エラーのリストが表示されない場合、構文エラーが発生します。

return (Math.cos(topAngleinRadians)(bottomAngle() = ladderLength^2 + floorLength^2 - verticalHeight^2) / 2 * ladderLength * floorLength);

  • Math.cos()呼び出しと式の次の部分の間に演算子はありません。
  • また、関数呼び出しに値を割り当てているように見えますが、これは意味がありません。
  • ^演算子も指数演算子ではなく、ビット単位の排他的論理和演算子です。あなたはおそらく探していMath.pow()ます。

それらは私が真上から見ているものです。Java演算子と、それらがどのように評価されるかについて読むと役立つ場合があります。

于 2012-11-05T16:16:58.733 に答える
4

ここにはいくつかの問題があります。

乗算-通常の代数とは異なり、2つの式の間で乗算が必要であることを明示的に定義する必要がありますMath.cos(topAngleinRadians)*...

割り当て-メソッド呼び出し()に何かを割り当てようとしているようbottomAngle() = ...です。これは実際にはあなたができることではなく、あなたがそれによって何を達成しようとしているのか私にはよくわかりません。

二乗-Javaでは二乗し10^2ませんが、(排他的論理和)演算子です。あなたはおそらく使用したい、または単に10100XORMath.pow(ladderLength, 2)ladderLength * ladderLength

于 2012-11-05T16:19:29.417 に答える
2

代数表記とは異なり、Javaの括弧は暗黙的に乗算されません。

*の間に挿入する必要があります)(

于 2012-11-05T16:14:33.570 に答える
1

returnステートメントの目的を本当に理解することはできませんが、ステートメントを2〜3行に分割して、読みやすくしたいと思います。

public double bottomAngle() {

        topAngleinRadians = Math.toRadians(topAngle) ;


        double bottomAngle = Math.pow(ladderLength, 2) + Math.pow(floorLength, 2) - 
                             Math.pow(verticalHeight, 2);

        double denom = 2 * ladderLength * floorLength;
        double numerator = bottomAngle * Math.cos(topAngleinRadians);

        return numerator / denom ;
}

は、Java3 ^ 2では意味することに注意してください。そのための方法3 squaredが必要になります。Math.pow

bottomAngle()また、 LHSでメソッド呼び出しが発生した理由を確認する必要があります。ここでは一時変数であると仮定しました。

ご覧のとおり、コードははるかに読みやすくなっています。また、コンパイラのエラーを見つけやすくなります。

于 2012-11-05T16:19:06.283 に答える
0

あなたのsytnaxは正しくありません。括弧は乗算を意味するものではなく、明示的な*(乗算演算子)が必要です。また、他にもいくつかの間違いがあります。

Math.cos(topAngleinRadians)(bottomAngle() = ladderLength^2 + floorLength^2...

これはメソッド呼び出しのように見えます。つまり、bottomAngle()が他の式と等しく設定されているため、これも無効です。

于 2012-11-05T16:17:12.523 に答える