簡體   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