2012-09-21 46 views
3

这是我在一些基本的C#编程中的尝试。该程序旨在向用户询问数组的大小,然后填充数组,打印数组并最终找到它们用于填充数组的平均数。该程序目前不编译。这是我第一次在没有任何参考书的情况下做这个,所以有人可以帮我解释我错过了什么吗?谢谢。编辑:所有的程序工作除了有关在数组中找到平均值的部分。另外,如果有任何不适合生产级编码的愚蠢错误,请告诉我。查找用户指定大小的数组的平均值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; 


    } 

} 
+0

您使用的是什么版本的.Net框架? –

+0

使用Visual Studio 2010 4.0 – wootscootinboogie

回答

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; 
    } 
} 

如果你想讨论的概念,我们将愿意帮助更多。

+0

这与我想要做的很接近,但是编译器告诉我''arrayum在这个上下文中不存在'。因为这个原因,我也在for循环之外声明了它。 – wootscootinboogie

+1

你必须记住c#是区分大小写的。所以arraySum和Arrayum不是一回事。 –

+0

最后一件事..这是我试图打印到屏幕上,我没有看到控制台中的任何东西。 'Console.WriteLine(Calcs.FindAverage(AverageArray));'我无法弄清楚它是怎么回事。 – wootscootinboogie

4

有几个错误的位置:

您的循环不应该指定“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 
} 

您的返回n语句不需要变量声明:

// 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中编译此内容时,错误窗口将列出您的代码中带有说明的错误。您可以双击每个错误,并将直接引导到导致错误的行。这应该使得找出如何解决你的代码非常简单,一次一个错误。

+0

此外,当您使用'Console.WriteLine(FindAverage)'时,您需要在静态方法之前使用类名称,并实际调用方法,如下所示:'Console.WriteLine(Calc .FindAverage());' –

+0

@DaveZych是啊 - 在你把它放到那里之前就抓到了(并更新了)。 ;) –

1

如果您使用的是.NET框架3.5及以上版本,那么你应该使用LINQ扩展方法Enumerable.Average(IEnumerable<Int32>),而不是重塑功能:)

+0

谢谢你。这是我需要知道的事情(不是重新发明轮子,就是这样)。 – wootscootinboogie

+1

我不同意。如果OP通常学习C#和.NET,那么他/她在进入Linq之前应该坚持语言的基础知识。 – kprobst

+1

这是我的困境。我知道我不应该重新发明轮子,但是我想先做足够的滚动。 – wootscootinboogie

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做到这一点很容易,但如果你正在学习最好是坚持使用语言基础知识。

相关问题