2016-03-01 4 views
-6

Я не знаю, в чем проблема с этим кодом.Как вернуть объект в Java?

public Polynomial negate(){ 

    int i; 

    for(i = 0; i<this.coefficients.length;i++){ 

     this.coefficients[i] = -this.coefficients[i]; 
    } 

    return this; 

} 

Polynomial - это имя класса, а коэффициенты [] - это массив коэффициентов. Этот метод должен возвращать массив со всеми значениями отрицается, но вместо этого он возвращает некоторые странные направления, как [D @ 5afaa824

+0

Показать свой код. И только для записи, что вы делаете, в лучшем случае сомнительно. Что делать, если два параллельных потока пытаются одновременно вызвать ваш метод в одном экземпляре? – fge

+0

Просьба указать код, показывающий, как вы это называете. –

+1

Не могли бы вы предоставить дополнительную информацию о том, какой код использует отрицание? Для меня это звучит так, будто вы пытаетесь сделать System.print (somePolynomial). Сам код выглядит так, как будто он должен работать - вернем, это просто отлично на Java. – Sessamekesh

ответ

-1

Предполагается ли называться этим другим способом так:

Polynomial test = new Polynomial(4); 

// Give values 

test.negate().evaluate(5) 

Это метод оценки:

public double evaluate(double x){ 

    double result = 0; 

    for(int i = 0; i< coefficients.length;i++){ 

     result +=coefficients[i] * Math.pow(x,i); 

    } 

    return result; 

} 
+1

Редактировать свой вопрос. Не отправляйте разъяснения в качестве ответа. –

+1

Также: ничто в этом коде не печатает ничего, поэтому оно не дает поведения, которое вы описываете в вопросе. –

0

Это зависит от остальной части вашего кода. Сам по себе код, который вы написали, выглядит действительным. Не видя ничего другого, я бы себе представить, что проблема либо:

1) Вызывающий код ожидает массив, а вместо этого получает некоторый многочлен

Чтобы это исправить, изменить способ возвращать ИНТ [], как так:

public int[] negate(){ 
    int i; 
    for(i = 0; i<this.coefficients.length;i++){ 
     this.coefficients[i] = -this.coefficients[i]; 
    } 
    return this.coefficients; 
} 

2) вызывающий код ожидает полином, но не использовать его правильно

Если у вас есть somethi ng вот так:

System.out.print(myPolynomial.negate()); 

тогда у вас будет плохое время. Попробуйте заменить его примерно так:

myPolynomial.negate(); 
System.out.println(Arrays.toString(myPolynomial.coefficients)); 
+0

Я думаю, вы имеете в виду 'System.out.print'; – callyalater

+1

Я думаю, вы имеете в виду 'System.out.println (Arrays.toString (mPolynomial.coefficients));'. –

+0

Ой, ты прав. Я сделаю эти изменения. – Sessamekesh

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