2015-10-21 4 views
-2

Мне нужно написать программу, и в один шаг от нее мне нужно построить функцию, которая вычисляет количество кроликов.Почему эти переменные не могут быть решены?

Проблема заключается в том, что Eclipse показывает сообщение о том, что переменная, которую я создал «не может быть разрешена переменной», и я не понимаю, почему это происходит. Кто-нибудь может мне помочь?

Вот часть моего кода

Я показываю весь мой код, потому что он хотел бы получить больше и не требуется, для того, чтобы решить эту проблему

class Rabbits { 
    static int nbRabbits = initRabbits;  // ERROR HERE!!!!!!!!!!!!!!!!!!!!!!!!!! 
    static int nbFoxes = initFoxes;   // ERROR HERE!!!!!!!!!!!!!!!!!!!!!!!!!! 
    int rabbits = 0; 

    public static int calculateRabbits(int rabbits, int foxes, double AttackRate) { 
     for (int i = 0; i < Duration; ++i) { 
      rabbits = nbRabbits; 
      nbRabbits *= (1.0 + Rabbits_growth_rate - AttackRate * nbFoxes); 
     } 
     return nbRabbits; 
    } 

    public static void main(String[] args) { 
     Scanner keyb = new Scanner(System.in); 

     // Enter initial population 
     int initFoxes = enterPopulation("foxes", 2, keyb); //at least 2 foxes 
     int initRabbits = enterPopulation("rabbits", 5, keyb); //at least 5 rabbits 

     // SOME MORE CODE HERE 
    } // end main 
} // end of class 

initRabbits и initFoxes вводятся переменные пользователем, когда я звоню enterPopulation метод.

Я новичок в Java и, к сожалению, я не могу изменить логику этого кода. Например, я не могу поместить метод calculateRabbits внутри main ни изменить начало, ни конец кода.

+1

* «nitRabbits и initFoxes переменные, введенные пользователем» * - Итак, чтобы начать с '' initRabbits' и initFoxes' вне контекста, они имеют смысл только в 'main' метода. Во-вторых, когда инициализируются 'nbRabbits' и' nbFoxes', значения, которые вы (пытаетесь) назначить им, не имели бы значимого значения, предполагая, что они были в области/контексте – MadProgrammer

+0

'int rabbits = 0.0;' вы можете объяснить, почему вы хотите инициализировать целое число с двойным номером? – Tom

+0

Чем больше я смотрю на него, тем больше у меня болит голова. Этот код настолько ошибочен, что почти невозможно помочь. О, и привет парень. – tom

ответ

0

initRabbits только в основном способ. То есть это scope.

Вы пытаетесь статически ссылаться на что-то, чего он не видит. Вы пытаетесь заполнить nRabbits до того, как значение innitRabbits существует. Это невозможно.

+0

Я понимаю. Итак, как я могу инициализировать 'nbRabbits' внутри моего метода' calculateRabbits' со значениями, указанными пользователем? Как вы видите в моем коде, я пытался это сделать. – Rods2292

+0

Каков ваш метод? Вопрос непонятен. – tom

+0

'calculateRabbits' метод – Rods2292

0

Ваша попытка присвоить значение вашим nb-переменным переменной, которая еще не создана. Пропустите создание четырех переменных и просто назначьте nbs 0 вне основного класса, а затем дайте им необходимое значение внутри него. Затем они сохранят это значение вне основного класса и будут видны.

static int nbRabbits = 0; 
static int nbFoxes = 0; 

//in main class 
nbFoxes = enterPopulation("foxes", 2, keyb); //at least 2 foxes 
nbRabbits = enterPopulation("rabbits", 5, keyb); //at least 5 rabbits 
Смежные вопросы