无法编译的代码 - 非法表达式的开始

时间:2013-10-24 14:33:00

标签: java

多次检查和谷歌搜索后,我无法理清为什么我一直收到这个错误。最初我有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;行中。对不起,我之前没有明确提到过这个问题。错误消息没有指定问题的根源,因此我对可能导致它的原因感到困惑。

5 个答案:

答案 0 :(得分:8)

Java没有** - 这就是Python。您可以使用Math.pow()

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

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

答案 1 :(得分:0)

哪条线会导致您的错误?

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

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

答案 2 :(得分:0)

Java没有**运算符,如果需要电源,请使用Math.pow()

答案 3 :(得分:0)

不要使用**

使用Math.pow()方法,即

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

答案 4 :(得分:0)

rosenbrock = (1-x)**2+100*(y-x**2)**2;

你知道,如果我不得不在黑暗中拍摄,我会说Java编译器正在**完全心脏骤停。我害怕这不会编译。将它们替换为*以进行乘法。

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