首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >循环在计算所有正数c#时不起作用

问循环在计算所有正数c#时不起作用
EN

Stack Overflow用户
提问于 2022-09-28 14:17:42
回答 2查看 72关注 0票数 1

我正在做一个while循环。循环的目的是取所有正数并计算平均值。它大部分时间起作用,但并不总是起作用。有人能帮忙吗?以下是代码:

代码语言:javascript
复制
double count = 0;
int sum = 0;
int input = -1;

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

    if (input > 0)
    {
        sum += input;
        count++;
    }

    if (input < 0)
    {
        Console.Write("Enter a number: ");
        input = int.Parse(Console.ReadLine());
    }
}

if (input == 0)
{
    Console.Write($"Average of all positive numbers is: { (sum += input) / count:0.00} ");
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-09-28 14:31:00

第二个如果是多余的,它应该像这样工作

代码语言:javascript
复制
while (input != 0) {
    Console.Write("Enter a number: ");
    input = int.Parse(Console.ReadLine());
    if (input > 0)
    {
        sum += input;
        count++;
    }
}

您的问题是,当您输入一个负数时,它给了您输入另一个数字的选项,但随后您输入了while循环的一个新的迭代,它要求您输入另一个数字。删除第二个if应该解决您的问题。希望我有所帮助:)

票数 1
EN

Stack Overflow用户

发布于 2022-09-28 14:41:12

当输入非数字数据时,此代码不会引发异常。

代码语言:javascript
复制
    int count = 0;
    long sum = 0;
    int input;
    
    Console.Write("Enter a number: ");
    while (int.TryParse(Console.ReadLine(), out input))
    {
        Console.Write("Enter a number: ");
        if (input > 0)
        {
            sum += input;
            count++;
        }
    }   
    
    Console.Write($"Average of all positive numbers is: {sum} / {Math.Max(count,1.0)} = {Math.Round( sum / Math.Max(count,1.0), 2)}.");
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73883068

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档