簡體   English   中英

無法打印出平均數組的結果

[英]Trouble printing out results of averaging an array

using System;

namespace RainfallHW {
    class Program {
        static void Main(string[] args) {
            string [] months;
            double[] rain;

            months = new string [12] {  "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"};
            rain = new double[12];

            for (int i = 0; i < rain.Length; i++) {
                Console.Write("Rainfall in {0}: ", months[i]);
                rain[i] = double.Parse(Console.ReadLine());

                while (rain[i] < 0) {
                    Console.Write("Rainfall in {0}: ", months[i]);
                    rain[i] = double.Parse(Console.ReadLine());

                    double avg;
                    double sum = 0;
                    for (int x = 0; x < rain.Length; x++) {
                        sum = sum + rain[i];
                    }
                    avg = sum / 12;
                    Console.WriteLine("");
                    Console.WriteLine("Average Month Rain: ", avg);
                }
            }
        }
    }
}

我正在嘗試獲取每個月的降雨量並將其平均化。 我無法得到它來打印出我的平均值。 我對數組和循環還比較陌生,只是不太確定我在哪里出錯。

我目前沒有任何輸出。 輸入每個月的輸入后,程序將立即關閉。

您非常接近:將降雨量加起來並除以月數的代碼必須在讀取循環之后而不是內部進行。

當前您什么都不打印,因為用於校正負輸入的循環包含了打印平均值的代碼。

您可以隨時進行加法計算sum 以下是您可以做什么的概述:

  • 進行for 12個月的for循環
  • 詢問降雨量
  • 輸入的值為負數時,繼續要求輸入
  • 輸入非負值時,將該值添加到運行總計中
  • 讀取循環結束后,將運行總計除以12。

編輯:請考慮我對以下代碼的編輯。 更新的while循環應確保提供了實際數字。 使用現有的while循環,如果輸入的不是數字,則將引發異常。

問題是while循環中的代碼。 看起來這可能是為了“嘿,您輸入的號碼無效,請重試。” 很好,但是您的其余代碼也在此循環內。

代替:

using System;

namespace RainfallHW
{
    class Program
    {
        static void Main(string[] args)
        {
            string[] months;
            double[] rain;
            double avg;
            double sum = 0;
            double value;
            string input;
            bool isValid = false;


            months = new string[12] { "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" };
            rain = new double[12];

            for (int i = 0; i < rain.Length; i++)
            {
                Console.Write("Rainfall in {0}: ", months[i]);

                while (!isValid)
                {
                    input = Console.ReadLine();
                    //TryParse returns true if input is a number
                    //Then check for > 0
                    if (double.TryParse(input, out value) && double.Parse(input) > 0)
                    {
                        rain[i] = double.Parse(input);
                        sum += rain[i]; //update the sum here instead of its own loop
                        isValid = true;
                    }
                    else 
                    {
                        Console.Write("Rainfall in {0}: ", months[i]);
                    }
                }
            }
            avg = sum / 12;
            Console.WriteLine("");
            Console.WriteLine("Average Month Rain: {0}", avg);
        }
    }
}

這就是我認為您正在嘗試做的事情。 如果不是這種情況,請告訴我,我可以再看看。

現在將運行的方式是

Get Input for month Check for invalid input Loop through final month Loop through rain array to compute average *annual* rainfall

您顯然弄亂了花括號。 將avg-calculating塊移到正確的位置后,它開始工作:

string [] months;
double[] rain;

months = new string [12] {  "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"};
rain = new double[12];

for (int i = 0; i < rain.Length; i++) {
    Console.Write("Rainfall in {0}: ", months[i]);
    rain[i] = double.Parse(Console.ReadLine());

    while (rain[i] < 0) {
        Console.Write("Rainfall in {0}: ", months[i]);
        rain[i] = double.Parse(Console.ReadLine());
    }
}
double avg;
double sum = 0;
for (int i = 0; i < rain.Length; i++) {
    sum = sum + rain[i];
}
avg = sum / 12;
Console.WriteLine("");
Console.WriteLine("Average Month Rain: " + avg);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM