2013-10-24 3 views
1

После проверки нескольких раз и googling я не могу разобраться, почему я продолжаю получать эту ошибку. Первоначально у меня было 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; 

    } 

EDIT: да, проблема была в линии rosenbrock = (1-x)**2+100*(y-x**2)**2; Я сожалею, что я прямо не упомянул об этом раньше. Сообщение об ошибке не указывало источник проблемы, поэтому я был смущен тем, что могло бы вызвать это.

+6

Какие строки вызывают ошибку? Что означает '**' в Java? –

+0

В следующий раз, когда вы захотите, чтобы Google существовал в 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() метод, т.е.

Розенброка = Math.pow (1 - х, 2) + 100 * Math.pow (у - Math.pow (х, 2), 2);

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

Вы знаете, если бы я должен был взять выстрел в темноте, я бы сказал, что компилятор Java оказывает полномасштабную остановку сердца на **. Боюсь, это не скомпилируется. Замените их на * для умножения.

Для электропитания мы используем Math.pow(), а не ^ или **.

Смежные вопросы