我没有使用 Java 数学表达式的经验。我正在尝试使用以下 java 表达式计算两个位置之间的距离,但我的应用程序给出以下错误消息
sqrt((var1___4 - var2___4)^2 + (var1___5 - var2___5)^2)
错误消息:未找到 jave 数学表达式中的变量 [var___5]。
我没有使用 Java 数学表达式的经验。我正在尝试使用以下 java 表达式计算两个位置之间的距离,但我的应用程序给出以下错误消息
sqrt((var1___4 - var2___4)^2 + (var1___5 - var2___5)^2)
错误消息:未找到 jave 数学表达式中的变量 [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来计算数字的根。
我建议您使用实用函数进行此类计算,因为它们比命名良好的函数(如此处给出的函数)更难阅读。
编辑:
在评论中,如果您使用的是 java 1.5 或更高版本,Ted 建议使用Math.hypot而不是 Math.sqrt。然后,该函数将如下所示:
public double getDistance(double x1, double y1, double x2, double y2){
double dx = x1-x2;
double dy = y1-y2;
return Math.hypot(dx, dy);
}
如果您使用的是 Java 1.5 或更高版本,这是一个更好的解决方案,因为 hypot 在计算 和 的平方时可以防止上溢或下dx
溢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
那么您在使用它之前没有声明它。