我需要编写一个程序,在其中的一个步骤中,我需要构建一个计算兔子数量的函数。
问题是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
内,也不能更改代码的开头或结尾。
答案 0 :(得分:0)
initRabbits
仅存在于main方法中。这就是范围。
您试图静态引用它无法看到的内容。您试图在innitRabbits的值存在之前填充nRabbits。这是不可能的。
答案 1 :(得分: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