【发布时间】:2016-08-06 14:26:34
【问题描述】:
我正在练习一些 Java,我正在编写的一个应用程序要求输出未来 75 年的世界人口。
我正在使用人口增长模型。我的问题是我的应用程序在应该输出估计人口的列中输出“无限”。
这是我的代码:
import java.util.Calendar;
import java.util.regex.Matcher;
public class WorldPopulationGrowth {
public static void main(String[] args) {
double currentWorldPopulation = 7.4e9;
double worldPopulationGrowthRate = 1.13;
double anticipatedWorldPopulation;
int initialYear = Calendar.getInstance().get(Calendar.YEAR);
System.out.println("Year\tAnticipated World Population (in billions)\tPopulation " +
"increase since last year");
System.out.println(String.format("%d\t%.1e\t\t\t\t\t\t\t\t\t\t\tNA", initialYear, currentWorldPopulation) );
for(int i=1; i < 76; i++){
int year = initialYear + i;
double growthExponential = worldPopulationGrowthRate*year*1.0;
anticipatedWorldPopulation = currentWorldPopulation * Math.pow(Math.E, growthExponential);
System.out.println(String.format("%d\t%.1e\t\t\t\t\t\t\t\t\t\t\t", year, anticipatedWorldPopulation));
currentWorldPopulation = anticipatedWorldPopulation;
}
}
}
【问题讨论】:
-
你试过通过它调试吗?对于每次迭代,您的
growthExponential正乘以当前年份,这肯定会影响您的数学运算 -
您似乎还通过使用
Math.E对您的数学做其他不正确的事情,这本身将在每次迭代中增加近三倍currentPopulation,但您将其提高到每个数千的幂时间.. -
增长应该由公式
pow(GrowthRate, i)或exp(log(GrowthRate)*i)。