c# - While 循环,对第五个、第十个、第十五个……等数求和

标签 c# while-loop iteration

需要做的事情的例子:

Example of what needs to be done

“输入了几个数字(输入再次以 0 结尾)。确定并打印第 5 个数字的总和, 第 10、15 个数字等。”

有人可以告诉我我的代码有什么问题吗?

class Program
{
    static void Main(string[] args)
    {
        int counter = 0;
        int sum = 0;

        Console.Write("Enter a number: ");
        int number = int.Parse(Console.ReadLine());

        while (number != 0)
        {
            if (number > 0 && counter % 5 == 0)
            {
                counter++;
                sum = sum + number;
            }
            Console.Write("Enter a number: ");
            number = int.Parse(Console.ReadLine());
        }

        Console.WriteLine("Sum of the 5th, 10th, 15th ... number is = {0}", sum);
        Console.ReadKey();
    }
}

最佳答案

问题:仅当 % 5 == 0 时才增加 counter,但它永远不会达到该值。如您所见,您的起始值为:

int counter = 0;

所以 if 条件的第二部分将在第一次迭代和所有后续迭代中评估为 false,因为变量永远没有机会改变。在所有迭代中它都保持在 0

解决方案:将递增行放在 if 子句之外。 这样你实际上是在计算输入数字的数量,因此你可以识别它是第 5 个、第 10 个、第 15 个......

既然你打算计算输入的数字,我建议把

number = int.Parse(Console.ReadLine());

作为 while 循环的第一行。然后你可以向上计数,然后你应该评估这个数字是否是第 5 个、第 10 个、第 15 个......元素:

while (number != 0)
{
    Console.Write("Enter a number: ");
    number = int.Parse(Console.ReadLine());
    counter++;

    if (number > 0 && counter % 5 == 0)
    {
        sum = sum + number;
    }
}

编辑:灵感来自 PaulF 的评论:

I would assume that the counter should only be incremented if (number > 0).

要使您的要求的详细信息正确,您需要制作一个额外的 if 子句来检查这种情况。但由于 0 是加法中的中性元素,它不会对计算的总和产生影响。因此代码仍应产生预期的结果

编辑 2:

如果您的意图也是不允许负数,那么您应该将 if 子句分成两部分,并且仅当输入的数字大于 0 时才增加计数器。之后您可以检查当前元素是否是要添加到总和的候选者:

while (number != 0)
{
    Console.Write("Enter a number: ");
    number = int.Parse(Console.ReadLine());

    if (number > 0 )
    {
        counter++;
        if (counter % 5 == 0)
        {
            sum = sum + number;
        }
    }
    else
    {
        Console.Write("Please no negative numbers!");
    }
}

关于c# - While 循环,对第五个、第十个、第十五个……等数求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52513911/

相关文章:

c# - http请求不包含.net core 2.1中createresponse的定义

c# - 自定义对象的值与 List<> 相等吗

c# - 如何绑定(bind)到 XAML 中实例化类的属性

php - 确定 php while 循环中的每个第三项?

javascript - (JavaScript) 为什么 while 循环中 'if' 内的 continue 语句会使浏览器崩溃?

python - 因此,我正在制作一个程序,可以多次向用户重复问候语,但是当他们想要继续时,它不会显示该代码

javascript - 比较不同大小和维度的数组

c# - 使用通用类库中的 Windows UWP Windows.Devices.SerialCommunication.SerialDevice

r - 重申弹性表的表分配

Java:迭代 org.w3c.dom.Document 中所有元素的最有效方法?