-1

我没有使用 Java 数学表达式的经验。我正在尝试使用以下 java 表达式计算两个位置之间的距离,但我的应用程序给出以下错误消息

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

错误消息:未找到 jave 数学表达式中的变量 [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来计算数字的根。

我建议您使用实用函数进行此类计算,因为它们比命名良好的函数(如此处给出的函数)更难阅读。

编辑:

在评论中,如果您使用的是 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 在计算 和 的平方时可以防止上溢或下dxdy

于 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)
  • 求平方数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 回答