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

循环应该计算城镇需要多少年才能看到其人口大于或等于当前人口。

int "initialPopulation" 年初的人口。

双“百分比”每年增长的百分比。

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;
            }
        }
    }
feng199032 回答:(C#) while 循环逻辑,如何计算在 value1 达到 value2 之前会有多少循环

你计算盈余的逻辑是错误的。您不需要减去初始人口。另外,将百分比除以 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;
            }
        }
本文链接:https://www.f2er.com/4562.html

大家都在问