繁体   English   中英

使用C#中的while循环计算所有用户输入数字的平均值

[英]Calculating average of all user input numbers using while loops in C#

我正在尝试解决我的一个课程中出现的问题。 提示告诉我们让用户输入任何数字(可以是正数、负数或 0),而忽略非数字输入。 然后我们需要计算并显示用户输入的所有数字的平均值。 如果用户没有给出任何数字,我需要输出“你没有输入任何数字”。

我的主要问题是我无法正确存储和添加用户提供的数字。 我相当确定 while 语句之前和之后的所有内容都是合理的。 所以,我知道问题必须在while (enter!="Yes"||enter!="yes"||enter!="Y"||enter!="y") ,但我不确定问题是什么。 由于我有我的平均值变量、用户给定数字的总和以及一个用于跟踪循环迭代的计数器,我很确定我的麻烦来自我的代码顺序不正确。

Console.WriteLine("Please enter any numbers, then type Yes to continue.");
        string enter = Console.ReadLine();
        string msg = "";
        decimal average;
        int counter = 0;
        decimal sum = 0;
        bool res = decimal.TryParse(enter, out average);
        while (enter!="Yes"||enter!="yes"||enter!="Y"||enter!="y")
        {
            sum = decimal.Parse(enter);
            Console.WriteLine("Please enter any numbers, then type Yes to continue");
            enter = Console.ReadLine();
            sum += counter;
            counter++;
        }
        average = sum / counter;
        msg = (res) ? $"The sum of your numbers is {average}" : "You didn't enter any numbers";
        Console.WriteLine(msg);

试试这个

static void Main()
{
    int counter = 0;
    decimal sum = 0;
    bool exit=false;    
    do 
    {
        Console.WriteLine("Please enter any number or type \"done\" to exit");
        var enter = Console.ReadLine();
        if (enter.Trim().ToLower() != "done")
        {
            var ok = decimal.TryParse(enter, out var num);
            if(!ok) continue;
            sum += num;
            counter++;
        } else exit=true;
        
    } while (!exit);
    
     var average = counter > 0 ? sum / counter:0;
     var msg = average>0?  $"The average  of your numbers is {average}" : "You didn't enter any numbers";
    Console.WriteLine(msg);
}

这是您可以玩的替代方案。 只是给你一些更多的想法。

string enter = "";
string[] stop = new [] { "yes", "y" };
List<int> numbers = new List<int>();
while (!stop.Contains(enter.ToLowerInvariant()))
{
    Console.WriteLine("Please enter any numbers, then type Yes to continue.");
    enter = Console.ReadLine();
    if (int.TryParse(enter, out int number))
    {
        numbers.Add(number);
    }
}
if (numbers.Any())
{
    Console.WriteLine($"The average of your numbers is {numbers.Average()}");
}
else
{
    Console.WriteLine("You didn't enter any numbers");
}

尝试这个......

    string enter = "";
    string msg = "";
    decimal average;
    int counter = 0;
    decimal sum = 0;
    decimal input;
    
    while (enter!="Yes"&&enter!="yes"&&enter!="Y"&&enter!="y")
    {
            Console.WriteLine("Please enter any numbers, then type Yes to continue");
            enter = Console.ReadLine();
            bool res = decimal.TryParse(enter, out input);
            if (res) { 
                sum += input;
                counter++;
            }
    }
    if (counter != 0)
    {
        average = sum / counter;
        msg = $"The average of your numbers is {average}";
    }
    else {
        msg = "You didn't enter any numbers";
    }

    Console.WriteLine(msg);
    System.Threading.Thread.Sleep(5000);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM