私はいくつかのJavaを実践しており、私が書いているアプリケーションの1つは、今後75年間に世界人口を出力するよう求めています。実際の数値の代わりに「無限大」出力を得る
私は人口増加モデルを使用しています。私の問題は、私のアプリケーションが推定人口が出力されるべき列に「Infinity」を出力することです。
これは私のコードです:
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'は現在の年で乗算されていますが、繰り返しごとに計算されます。 – Krease
あなたは' Math.E'を使って数学で他の不正なことをしているようです。 currentPopulation'を繰り返しますが、毎回数千の威力でそれを上げています。 – Krease
成長は、 'pow(GrowthRate、i)'または 'exp(log(GrowthRate)* i)'式でなければなりません。 – LutzL