查找具有用户C#指定大小的数组的平均值

时间:2012-09-21 20:19:41

标签: c# arrays

这是我尝试一些基本的C#编程。该程序旨在向用户询问数组的大小,然后填充数组,打印出数组,最后找到用于填充数组的数字的平均值。该程序目前无法编译。这是我第一次没有任何参考书这样做,所以有人可以帮我解释一下我缺少什么吗?谢谢。编辑:除了关于查找数组中数字平均值的部分外,所有程序都有效。另外,如果有任何对于生产级编码不谨慎的愚蠢错误,请告诉我。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace _9_21_Test
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("enter the amount of numbers you would like to find the average of: ");
            int arraylength = Int32.Parse(Console.ReadLine());
            int[] AverageArray = new int[arraylength];

            //filling the array with user input
            for (int i = 0; i < AverageArray.Length; i++)
            {
                Console.Write("enter the numbers you wish to find the average for: ");
                AverageArray[i] = Int32.Parse(Console.ReadLine());

            }
            //printing out the array 
            Console.WriteLine("here is your array: ");
            for(int i=0; i < AverageArray.Length; i++)
            {
                Console.WriteLine(AverageArray[i]);
            }
            Console.WriteLine(FindAverage);
        }

    }
    //Method to find the average is another class for learning porpoises
    class Calcs
    {
        public static double FindAverage(int[] averageNumbers);
        int arraySum=0;

        for(int i =0; i < averageNumbers.Length; int i++)
            arraysum+=arraysum;

       return double average = arraysum/averageNumbers.Length;


    }

}

4 个答案:

答案 0 :(得分:4)

这里有一些错误:

你的for循环不应该指定两次“int”,并且应该添加适当的数字:

// for(int i =0; i < averageNumbers.Length; int i++)
// Remove the extra "int", and 
for(int i =0; i < averageNumbers.Length; i++)
{
      // Add in averageNumbers[i], not arraysum
      arraysum += averageNumbers[i];
}

您还需要删除Calcs.FindAverage中的分号,并将其作为包裹在大括号中的方法:

class Calcs
{
    public static double FindAverage(int[] averageNumbers)
    { // Add brace...

        return //...
    } // Close brace
}

您的return语句不需要变量声明:

// return double average = arraysum/averageNumbers.Length;
// Just return the value
return arraysum/averageNumbers.Length;

此外,当您致电FindAverage时,您需要实际调用该方法,即:

    Console.WriteLine(Calc.FindAverage(AverageArray));

请注意,通常,使用.NET 4,您可以使用现有功能。您可以写下:

,而不是编写自己的方法
    Console.WriteLine(AverageArray.Average());

这是使用Enumerable.Average,这是一种适用于任何数字IEnumerable<T>的扩展方法,例如IEnumerable<int>(您的数组)。


请注意,在Visual Studio中编译时,错误窗口将列出代码中的错误以及描述。您可以双击每个错误,它会直接转到导致错误的行。这应该可以很容易地弄清楚如何修复你的代码,一次一个错误。

答案 1 :(得分:1)

如果您使用的是.NET 3.5+框架,那么您应该使用LINQ扩展方法Enumerable.Average(IEnumerable<Int32>)而不是重新发明功能:)

答案 2 :(得分:1)

更改

Console.WriteLine(FindAverage); 

Console.WriteLine(Calcs.FindAverage(AverageArray)); 

class Calcs 
{ 
    public static double FindAverage(int[] averageNumbers); 
    int arraySum=0; 

    for(int i =0; i < averageNumbers.Length; int i++) 
        arraysum+=arraysum; 

   return double average = arraysum/averageNumbers.Length; 


} 

class Calcs 
{ 
    public static double FindAverage(int[] averageNumbers)
    {
        int arraySum=0; 

        for(int i =0; i < averageNumbers.Length; i++) 
            arraySum+=averageNumbers[i]; 

        return arraySum/averageNumbers.Length; 
    } 
}

如果您想讨论这些概念,我们非常乐意提供帮助。

答案 3 :(得分:0)

static class Calc {

    public static double FindAverage(int[] numbers) {

        int sum = 0;

        foreach (int number in numbers) {
            sum += number;
        }

        return sum / numbers.Length;
    }
}

您也可以轻松地使用Linq,但如果您正在学习,最好坚持语言基础知识。