2016-06-24 3 views
-4

Для моего вопроса о назначении это метод с подписями public int applyNutrientCoefficient(), который вычисляет, какие Guppies в Pool умерли от недоедания, и возвращает количество смертей.boolean problem из другого класса

Используйте Iterator<Guppy> для перебора по guppiesInPool в Pool. Для каждого Guppy генерировать другое случайное число между 0.0 и 1.0 включительно с использованием метода RandomnextDouble(). Если это случайно генерируемое число больше, чем коэффициент полезного действия пула, убейте Guppy , установив соответствующее булево поле в Guppy. Обратите внимание, что этот метод не удаляет мертвых гуппи из пула, он просто убивает . Не делай ничего другого.

У меня есть 2 классов один Guppy один Pool в моем классе гуппи я сделал логическое -

private boolean isAlive{} 
public boolean getIsAlive(){ 
    return isAlive 
} 

в моем классе бассейн ....

public int applyNutrientCoefficient() 

int deathCount = 0 

Iterator<Guppy> it = guppiesInPool.iterator() 

while (it.hasNext()) 

Guppy guppyOne = it.next() 

    if (randomNumberGenerator.nextDouble() > nutrientCoefficient) 
    if (guppyOne.isAlive()) 
    guppyOne.setAlive(false) 
    deathCount++ 

    return deathCount 

Сообщение об ошибке I 'получение не может найти символ - метод isAlive()

Может кто-нибудь помочь пожалуйста

+1

Какой беспорядок, это недопустимый код Java. Вам не хватает точек с запятой и скобок. – tak3shi

ответ

0

вы должны Acces IsAlive частного поля через общедоступную добытчик, что вы предоставили getIsAlive()

В классе бассейна

if (randomNumberGenerator.nextDouble() > nutrientCoefficient) 
if (guppyOne.isAlive()) 
guppyOne.setAlive(false) 
deathCount++ 

return deathCount 

линия

if (guppyOne.isAlive()) 

вместо этого следует

if (guppyOne.getIsAlive()) 

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

public void setIsAlive(boolean alive){ 
this.isAlive = alive} 

конечный результат должен быть

if (randomNumberGenerator.nextDouble() > nutrientCoefficient) 
if (guppyOne.getIsAlive()) 
guppyOne.setIsAlive(false) 
deathCount++ 

return deathCount 
+0

Я сделал это, я положил getIsAlive(), но по какой-то причине все еще дал мне такую ​​же ошибку. как я могу сделать private isAlive общедоступным? я сделал public boolean getIsAlive() { return isAlive; – nikki

+0

Вы также должны ** вызывать ** 'getIsAlive()' для публичного доступа к текущему значению частного поля 'isAlive'. BTW: даже если он был public 'isAlive()' не будет компилироваться, потому что это не метод, а поле. – Fildor

+0

проблема заключается в том, что вы пытаетесь получить доступ в классе пула isAlive прямо, если (guppyOne.isAlive()) , когда вы должны использовать getter if (guppyOne.getIsAlive()) – Zeromus

0

Вашего синтаксис кажется любопытным прочь. Он должен быть

private boolean isAlive; //private field, not a method. 
public boolean getIsAlive() { //public getter method. 
    return isAlive; 
} 
public void setIsAlive(boolean isAlive) { //public setter method 
    this.isAlive = isAlive; 
} 

Затем

public int applyNutrientCoefficient() { 
    int deathCount = 0; 
    Iterator it = guppiesInPool.iterator(); 
    while (it.hasNext()) { 
     Guppy guppyOne = it.next(); 
     if (randomNumberGenerator.nextDouble() > nutrientCoefficient) { 
      if (guppyOne.getIsAlive()) { 
       guppyOne.setIsAlive(false); 
       deathCount++; // should be inside the if-block i suppose? 
      } 
     } 
    } 

    return deathCount; 
} 

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

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