1

我正在尝试编写一个程序,该程序采用人口的出生率和死亡率并循环年人口,直到它达到 0 或翻倍。

我的问题是它不断循环无数难以辨认的数字,我无法修复它。

import java.util.Scanner;
public class Hwk6 {
    public static void main (String[] args) {
        int currentYear, currentPopulation;
        double birthRate, deathRate;
        Scanner stdin = new Scanner(System.in);

        System.out.println("\nPopulation Estimator\n");
        System.out.println("Enter Year");
        currentYear = stdin.nextInt();
        System.out.println("Enter Current Population");
        currentPopulation = stdin.nextInt();
        System.out.println("Enter Birthrate of Population");
        birthRate = stdin.nextDouble();
        System.out.println("Enter Deathrate of Population");
        deathRate = stdin.nextDouble();

        int counter = currentPopulation;
        System.out.println("Population: ");
        while (currentPopulation != -1)
            while (counter < currentPopulation * 2) {
                System.out.print(counter + " ");
                counter = counter + (int)(counter * birthRate - counter * deathRate);
            }
        System.exit(0);
    }
}
4

2 回答 2

4

更新循环中currentPopulation某处的值while,否则while (currentPopulation != -1)始终评估为真(除非-1是原始值),您最终将陷入无限循环。

或者你的意思是

if (currentPopulation != -1)

代替

while (currentPopulation != -1)
于 2012-10-26T22:53:36.273 回答
2
while (currentPopulation != -1)

您的 while 条件将始终为真,因此它将无限迭代。因为您没有在currentPopulation任何地方更改 while 循环内部的值。

currentPopulation在内部 while 循环结束后,您需要更改外部 while 循环中某处的值。

while (currentPopulation != -1) {
     while (counter < currentPopulation * 2) {
           System.out.print(counter + " ");
           counter = counter + (int)(counter * birthRate - counter * deathRate);
     }

    // Change your `currentPopulation` here
}
于 2012-10-26T22:56:11.310 回答