1

在多次检查和谷歌搜索后,我仍然无法弄清楚为什么我不断收到此错误。最初我将double rosenbrock = (1-x)**2+100*(y-x**2)**2;其分为声明和赋值,但这并没有解决它。我敢肯定这个问题应该是微不足道的。

public double objFunction(double input1, double input2){
        double x = input1;
        double y = input2;
        double rosenbrock = 0;
        rosenbrock = (1-x)**2+100*(y-x**2)**2;
        return rosenbrock;

    }

编辑:是的,问题出在rosenbrock = (1-x)**2+100*(y-x**2)**2;我很抱歉我之前没有明确提到这一点。错误消息没有指定问题的根源,因此我对可能导致它的原因感到困惑。

4

5 回答 5

8

Java 没有**——那是 Python。您可以使用Math.pow()

rosenbrock = Math.pow(1 - x, 2) + 100 * Math.pow(y - x*x, 2);

您可以在Summary of Operators中找到所有有效运算符的列表。

于 2013-10-24T14:34:41.617 回答
0

Java没有**运算符,如果你想要权力,使用Math.pow()

于 2013-10-24T14:35:21.170 回答
0

不要使用**.

使用Math.pow()方法,即

罗森布洛克 = Math.pow(1 - x, 2), + 100 * Math.pow(y - Math.pow(x,2), 2);

于 2013-10-24T14:35:22.620 回答
0
rosenbrock = (1-x)**2+100*(y-x**2)**2;

你知道,如果我不得不在黑暗中试一试,我会说 Java 编译器在**. 恐怕不会编译。将它们替换*为乘法。

对于权力,我们使用Math.pow(), 而不是^or **

于 2013-10-24T14:35:45.810 回答
0

哪些行导致您的错误?

**在 Java中是什么意思?据我所知,它没有定义。

这个问题和类似问题的关键是查看导致错误的行和错误消息,因为这会告诉你哪里出了问题,或者至少你应该更详细地查看什么。这可以防止粗心的错误,这就是全部。

于 2013-10-24T14:34:49.893 回答