Это:
if (Pop2 > Pop1) {
Species2 = Species1;
Pop2 = Pop1;
Growth1 = Growth2;
}
не имеет смысла.Очевидно, что вы намереваетесь «поменять» значения для двух совокупностей, но вместо этого вы просто сделаете так, чтобы две совокупности были идентичными, так что для любого значения years
, predictPopulation(years)
будет одинаковым для обоих объектов.
Отредактировано, чтобы добавить: Этот тест:
if ((input1.predictPopulation(1) - input2.predictPopulation(1)) <
(input1.predictPopulation(2) - input2.predictPopulation(2)))
не является верным способом узнать, превзойдет ли вид 2 в конечном итоге вид 1. Если вид 2имеет более высокую пропорциональную скорость роста (growthRate
), тогда он в конечном итоге настигнет вид 1, даже если в течение первых нескольких лет он будет иметь более низкую абсолютную скорость роста.(Это только косвенно относится к вашему бесконечному циклу - Dampsquid указывает, что у вас не было бы бесконечного цикла, если бы у вас было <=
вместо <
- но это проблема, которую вам нужноисправить.)