2013-10-24 37 views
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;对不起,我没有明确之前提到这一点。错误信息没有说明问题的根源,因此我对可能导致问题的原因感到困惑。

+6

哪条线会导致您的错误?在Java中'**'是什么意思? –

+0

下次您可能想要谷歌什么运营商存在于java –

+0

是的,我明白了,谢谢。 – Alex

回答

8

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

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

你可以找到Summary of Operators所有有效运营商的列表。

0

哪条线会导致您的错误?

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

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

+0

错误消息对操作员没有提到任何信息 – Alex

+0

@Alex:它肯定告诉你哪一行导致错误。你忽略了在你的问题中提出这个问题,这表明你没有太重视那条信息。这很关键。 –

0

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

0

不使用**

使用Math.pow()方法,即,

的ROSENBROCK = Math.pow(1 - X,2),+ 100 * Math.pow(Y - Math.pow(X,2),2);

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

你知道,如果我不得不采取瞎猜,我想说的Java编译器是具有**一个完全成熟的心脏骤停。恐怕不会编译。将它们替换为*以实现乘法。

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