(C#)while循环逻辑,如何计算直到value1到达value2会有多少次循环
(C#) while loop logic, how to calculate how many loops there will be until value1 reaches value2
循环应该计算城镇人口大于或等于 currentPopulation 居民所需的年数。
int "initialPopulation" 年初人口数
double "percent" 每年增长的百分比。
int "visitors" 来小镇居住的访客(每年新增居民)。
int "currentPopulation" 当前人口。
所以我正在尝试 return 计算年数,但是无论 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;
}
}
循环应该计算城镇人口大于或等于 currentPopulation 居民所需的年数。
int "initialPopulation" 年初人口数
double "percent" 每年增长的百分比。
int "visitors" 来小镇居住的访客(每年新增居民)。
int "currentPopulation" 当前人口。
所以我正在尝试 return 计算年数,但是无论 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;
}
}