2016-11-29 2 views
-11

Так что в данный момент мне удалось создать метод получения с помощью следующего кодаЗастрял на создание сеттера метода

public int getDivisor() { 
    return this.divisor; 
} 

Это вернет 2.

Я застрял на создание сеттера метод для моего проекта. Возникает вопрос: напишите общедоступный метод setter для divisor, который устанавливает divisor в значение аргумента. Это не может быть 0, действительно застрял в этом вопросе. Может ли кто-нибудь помочь, пожалуйста? Очень признателен.

Теперь я добавил следующий метод

public void setValue(int number) { 
    if(number == 0) 
     this.divisor = number; 
} 

для сообщения сеттер.

После ввода сообщения divisor.SetValue(); он возвращается Ошибка не может найти символ - метод SetValue(). Я делаю что-то неправильно?

+1

Ну, он просто установит значение, а не вернет что-то, чтобы вы знали, что оно должно быть «пусто». Вам нужно целое число как аргумент, и имя может быть «setValue», поэтому 'setValue (int number)' может быть сигнатурой. Вы хотите установить значение делителя на это число, поэтому вам нужно 'this.divisor = number;'.Но вам нужно удостовериться, что число не равно 0, и именно там прекрасно подходит 'if (number == 0)'. – Gendarme

+1

Всегда пожалуйста, покажите свою лучшую добросовестную попытку решить вашу проблему с вашим вопросом. Иначе, как кто-нибудь узнает, какие проблемы у вас могут возникнуть? –

+0

Я отредактировал мое сообщение, но все еще получаю сообщение об ошибке? – Display286

ответ

-1

Установщик метод просто метод, который устанавливает значение переменного, что аргумент, который передается с помощью метода, как правило, типа пустот, так как вы не возвращаете значение

public void setValue(int value){ 
    if(value != 0) this.divisor = value; 
} 
+0

Что касается того факта, что 'значение' не может быть' 0' ? – Gendarme

+0

Извинения, которые я забыл добавить в эту часть. – isema

+1

Как вы думаете, просто молча игнорировать ошибочный ввод в порядке? –

0

Первых , как указано в комментариях, вы делаете противоположное тому, что вы хотите делать. Я хотел бы предложить, что вы могли бы бросить IllegalArgumentException когда number является 0, как это:

public void setValue(int number) { 
    if(number == 0) 
     throw new IllegalArgumentException("The value 0 is not valid"); 
    this.divisor = number; 
} 

Что касается вашего вопроса о вызове метода:

divisor.SetValue();

Как было отмечено в комментариях, метод подписи чувствителен к регистру, так S etValue не будет работать. Кроме того, для этого метода требуется целочисленный параметр, вы не указали никаких параметров. Вы должны вызвать метод, как это вместо:

divisor.setValue(123); //Any integer parameter is fine, just an example

-1

Жандармских ответы от комментариев на странице помогли мне решить эту проблему.

public void setValue(int number) { 
    if(number == 0) 
     this.divisor = number; 
} 
+0

Это все еще верно? Ваша домашняя работа говорит: «Это не может быть 0» и что вы здесь делаете? ... – Tom

0

Просто используйте != оператор, который означает, что не равно, по коду

Вобще:

public void setValue(int number) { 

    if (number != 0) 
     this.divisor = number; 
    } 
} 

Это будет проверять, если заданное значение параметра не равно 0, и затем перейдем к установке делителя на число.

0

setValue() и SetValue() это две разные вещи. Имена чувствительны к регистру. Поэтому компилятор не смог найти setValue(), так как вы набрали SetValue()!

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