(c#) while循环逻辑,如何计算在value1到达value2之前会有多少个循环



循环应该计算城镇的人口大于或等于当前人口的年数。

int"initialPopulation"一年初的人口。

双"percent"每年的增长百分比。

int"visitors"来镇上居住的游客(每年的新居民)。

int"currentPopulation"现在的人口。

所以我试图返回年计数,然而循环只循环一次,无论InitialPopulation和CurrentPopulation之间的差异是什么,我希望它也循环,直到它达到CurrentPopulation。

这可能是我的问题,在教科书上测试了逻辑,它应该真的通过了,所以要么我的逻辑坏了,要么我不理解某种While循环规则。

如果我的描述不太清楚,请评论。提前谢谢你。

public static int GetYears(int initialPopulation, double percent, int visitors, int currentPopulation)
{
if (initialPopulation <= 0 || visitors < 0 || currentPopulation <= 0 || currentPopulation < initialPopulation)
{
throw new ArgumentException(null);
}
else if (percent < 0 || percent > 100)
{
throw new ArgumentOutOfRangeException(nameof(percent));
}
else
{

int countOfYear = 0;
while (initialPopulation < currentPopulation)
{
int surplus = ((int)(initialPopulation * percent) + visitors) - initialPopulation;
initialPopulation += surplus;
countOfYear++;
}
return countOfYear;
}
}
}

你计算盈余的逻辑是错误的。不需要减去初始总体。同样,百分数除以100。

public static int GetYears(int initialPopulation, double percent, int visitors, int currentPopulation)
{
if (initialPopulation <= 0 || visitors < 0 || currentPopulation <= 0 || currentPopulation < initialPopulation)
{
throw new ArgumentException(null);
}
else if (percent < 0 || percent > 100)
{
throw new ArgumentOutOfRangeException(nameof(percent));
}
else
{
int countOfYear = 0;
while (initialPopulation < currentPopulation)
{
int surplus= (int)(initialPopulation * percent / 100 + visitors);
initialPopulation += surplus;
countOfYear++;
}
return countOfYear;
}
}

最新更新