2012-09-21 39 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做到這一點很容易,但如果你正在學習最好是堅持使用語言基礎知識。

相關問題