为什么不能解决这些变量?

时间:2015-10-21 23:17:53

标签: java

我需要编写一个程序,在其中的一个步骤中,我需要构建一个计算兔子数量的函数。

问题是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

initRabbitsinitFoxes是用户在调用enterPopulation方法时输入的变量。

我是Java的新手,不幸的是,我无法改变这段代码的逻辑。例如,我无法将calculateRabbits方法放在main内,也不能更改代码的开头或结尾。

2 个答案:

答案 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