-1

私は Java 数式の経験がありません。以下の Java 式を使用して 2 つの場所の間の距離を計算しようとしていますが、アプリケーションで以下のエラー メッセージが表示されます。

sqrt((var1___4 - var2___4)^2 + (var1___5 - var2___5)^2)

エラー メッセージ : javae 数式内の変数 [var___5] が見つかりません。

4

4 に答える 4

6

距離を計算する関数は次のとおりです。

public double getDistance(double x1, double y1, double x2, double y2){
    double dx = x1-x2;
    double dy = y1-y2;
    return Math.sqrt(dx * dx + dy * dy);
}

この^文字は、Java で数値を累乗する有効な方法ではありません。Java で有効な演算子へのリンクを次に示します。

また、数値の根を計算するには、静的平方根関数Math.sqrtを参照する必要があります。

このような計算にはユーティリティ関数を使用することをお勧めします。これは、よく名前が付けられた関数 (ここに示されている関数など) よりも読みにくいためです。

編集:

コメントで、Ted は、Java 1.5 以降を使用している場合、Math.sqrt の代わりに Math.hypot を使用することを提案しました関数は次のようになります。

public double getDistance(double x1, double y1, double x2, double y2){
    double dx = x1-x2;
    double dy = y1-y2;
    return Math.hypot(dx, dy);
}

dxJava 1.5 以降を使用している場合は、hypot がとの 2 乗の計算でオーバーフローまたはアンダーフローを防ぐため、これがより適切なソリューションですdy

于 2013-08-12T15:55:25.473 に答える
1

方法は次のとおりです。

Math.sqrt(Math.pow(var1___4 - var2___4, 2) + Math.pow(var1___5 - var2___5, 2));

メモを取る:

  • Java では、すべての数学関数がMath静的メソッドとしてクラスに存在します。
  • 数値の平方根を取得するには、次nを使用しますMath.sqrt(n)
  • 数値を 2 乗するには、またはnを使用します。Math.pow(n, 2)n * n
于 2013-08-12T15:54:01.527 に答える
1

^Java の数学的累乗演算子ではなく、Bitwise exclusive ORです。

Math.pow(x, y)したがって、代わりに書く必要があります。

したがって、コードを修正するには、代わりに次のように記述する必要があります。

Math.sqrt(Math.pow(var1___4 - var2___4, 2) + Math.pow(var1___5 - var2___5, 2));
于 2013-08-12T15:55:01.770 に答える
0

^演算子は、Java の累乗には使用されません。値を二乗したい場合は、クラスのpowメソッドを使用できます。math

sqrt(Math.pow((var1___4 - var2___4),2) + Math.pow((var1___5 - var2___5),2));

また、ステートメントの最後にセミコロンがありません。

この変数var___5はコード サンプルでは使用されていませんが、使用されている場合は、使用するnot found前に変数を宣言していません。

于 2013-08-12T15:55:13.193 に答える