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