我的C#数组仅对最后一个用户输入求和并取平均值

时间:2014-08-30 15:23:26

标签: c# arrays

我构建了一个C#程序,其中提示用户输入10个不同的值,然后程序应该对这些值求和并平均并打印总和和平均值。我遇到的问题是我的程序只捕获输入的最后一个值...请帮忙!

namespace ConsoleApplication4
{
    class Program
    {
        const int count = 10;

        static void Input(double[] numbers, int num)
        {
            for (int i = 0; i <= 9; i++)
            {
                Console.Write("Enter integer {0}: ", i + 1);
                numbers[num] = Convert.ToDouble(Console.ReadLine());
            }
        }

        static void Average(double[] numbers, int num)
        {
            double sum = 0;
            double avg = 0;
            for (int i =    0; i < numbers.Length; i++)
            {
                sum += numbers[i];
            }
            avg = sum / numbers.Length;

            Console.WriteLine("The sum of the inputs is {0} and the average is {1}", sum, avg);
        }

        static void Main(string[] args)
        {
            double[] numbers = new double[count];
            for (int num = 0; num < 1; num++)
            {
                Input(numbers, num);
                Average(numbers, num);
                Console.WriteLine("Press the Enter Key");
                Console.ReadLine();
            }
        }
    }
}

}

3 个答案:

答案 0 :(得分:3)

在您的输入法中,您将用户输入分配给数字[num]而不是数字[i]。

答案 1 :(得分:2)

如果您查看Input()方法,则始终存储在for循环中的num索引中,但num在循环中不会更改。您应该使用numbers[i]代替numbers[num]

答案 2 :(得分:1)

for (int i = 0; i <= 9; i++)
{
    Console.Write("Enter integer {0}: ", i + 1);
    numbers[num] = Convert.ToDouble(Console.ReadLine());

那应该是

numbers[i] = Convert.ToDouble(Console.ReadLine());