私は Java 数式の経験がありません。以下の Java 式を使用して 2 つの場所の間の距離を計算しようとしていますが、アプリケーションで以下のエラー メッセージが表示されます。
sqrt((var1___4 - var2___4)^2 + (var1___5 - var2___5)^2)
エラー メッセージ : javae 数式内の変数 [var___5] が見つかりません。
私は Java 数式の経験がありません。以下の Java 式を使用して 2 つの場所の間の距離を計算しようとしていますが、アプリケーションで以下のエラー メッセージが表示されます。
sqrt((var1___4 - var2___4)^2 + (var1___5 - var2___5)^2)
エラー メッセージ : javae 数式内の変数 [var___5] が見つかりません。
距離を計算する関数は次のとおりです。
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);
}
dx
Java 1.5 以降を使用している場合は、hypot がとの 2 乗の計算でオーバーフローまたはアンダーフローを防ぐため、これがより適切なソリューションですdy
。
方法は次のとおりです。
Math.sqrt(Math.pow(var1___4 - var2___4, 2) + Math.pow(var1___5 - var2___5, 2));
メモを取る:
Math
静的メソッドとしてクラスに存在します。n
を使用しますMath.sqrt(n)
n
を使用します。Math.pow(n, 2)
n * n
は^
Java の数学的累乗演算子ではなく、Bitwise exclusive OR
です。
Math.pow(x, y)
したがって、代わりに書く必要があります。
したがって、コードを修正するには、代わりに次のように記述する必要があります。
Math.sqrt(Math.pow(var1___4 - var2___4, 2) + Math.pow(var1___5 - var2___5, 2));
^
演算子は、Java の累乗には使用されません。値を二乗したい場合は、クラスのpow
メソッドを使用できます。math
sqrt(Math.pow((var1___4 - var2___4),2) + Math.pow((var1___5 - var2___5),2));
また、ステートメントの最後にセミコロンがありません。
この変数var___5
はコード サンプルでは使用されていませんが、使用されている場合は、使用するnot found
前に変数を宣言していません。