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

这里有几个问题。

乘法- 与常规代数不同,您必须明确定义要在两个表达式之间进行乘法运算Math.cos(topAngleinRadians)*...

分配- 您似乎试图将某些东西分配给方法调用 ( bottomAngle() = ...)。这不是您真正可以做的事情,我不确定您要通过它来实现什么。

平方-在java10^2中不平方,而是(异或)运算符。您可能想使用或简单地使用10100XORMath.pow(ladderLength, 2)ladderLength * ladderLength

于 2012-11-05T16:19:29.417 回答
2

与代数表示法不同,Java 括号不会隐式相乘。

您需要插入一个*between )(

于 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

您的语法不正确。括号不表示乘法,您需要显式 * (乘法运算符)。此外,您还有其他一些错误:

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

这看起来像一个方法调用,即 bottomAngle() 被设置为等于其他表达式,这也是无效的..

于 2012-11-05T16:17:12.523 回答