2015-10-27 4 views
0

Недавно я начал свое образование по разработке программного обеспечения, где мы в настоящее время изучаем основы Java ... мы должны создать простую текстовую игру в аэропорту, и у меня возникла небольшая проблема.if/else if inside getter/setter Java

Я уже пробовал Google и функцию поиска SOF и нашел много «решений»; никто, кажется, не исправил мою проблему. так что простите меня за мой «noob» qeustion: P

В игре у нас есть несколько аэропортов, которые генерируют случайное количество пассажиров в каждом раунде с минимальным количеством 100 и максимум 999. Для этого я использовал следующие код ... который работает и не дает мне никаких ошибок, но я все равно получаю случайные результаты ниже 100. Что я делаю неправильно? как я сказал, я перепробовал много различных способов, но это, кажется, пренебрегать моим, если/If Else условиях ...

int paxGenerator; 

public int getPaxGenerator() { 
    return this.paxGenerator = (int) (Math.random() * 1000); 

} 

public void setPaxGenerator(int paxGenerator) { 

    if (paxGenerator<100) { 
     this.paxGenerator = 100; 
    } else if (paxGenerator > 999) { 
     this.paxGenerator = 999; 
    } 

} 

EDIT:

return this.paxGenerator = (int) (Math.random() * 900) + 100; действительно исправить мою проблему, THx @ user43219 Однако, ради обучения; может ли кто-нибудь дать мне пример того, как я должен правильно выполнять инструкцию if else? Поскольку я хочу создать 12 новых объектов, все они должны генерировать другое случайное число. если я помещаю случайный код за пределы getter/seters, он дает мне одинаковое число каждый раз ... и оператор if else даже не допускается за пределы getter/seters ... помните, что я начинающий, поэтому все, что очевидно для меня : P thx заранее!

+2

Попробуйте проанализировать, что делает ваш геттер, вот где вы ошибетесь. – biziclop

+0

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

+0

Вы можете посмотреть [Random.nextInt (int n)] (http://docs.oracle.com/javase/7/docs/api/java/util/Random.html#nextInt (int)) –

ответ

1

Если у вас есть «пол» из 100 пассажиров, лично я бы избежать все сложную логики и просто использовать this.paxgenerator = (int)(Math.random()*900)+100;

(int)(Math.random()*x) будет генерировать число от 0 до й-1.

1

Вы не звоните в свой сеттер. Линия:

return this.paxGenerator = (int) (Math.random() * 1000); 

делает не неявно вызывает setPaxGenerator() - он обходит сеттер и устанавливает значение свойства непосредственно.

+1

Хотя это точно отвечает на ваш вопрос, я хотел бы добавить, что вы не должны злоупотреблять геттерами и сеттерами в такой степени. - getPaxGenerator должен быть идемпотентным, т. Е. Каждый ожидает, что значение останется таким же независимо от того, как часто вы его читаете. - setPaxGenerator должен установить значение точно для значения, которое вы передаете ему (или выбросить исключение, если значение недействительно). Все остальное просто смутит других, используя ваш код. В вашем случае просто создайте один метод с именем generatePax() или что-то еще, и разместите там весь свой код генерации. –

0

Вы можете использовать класс Random.

Random rand = new Random(); 

int randomNum = rand.nextInt((999 - 100) + 1) + 100; 

    System.out.println(randomNum);