2013-10-24 39 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(),而不是^**