3

这是我对一些基本 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

4 回答 4

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,这是一种适用于任何 numeric 的扩展方法IEnumerable<T>,例如IEnumerable<int>(您的数组)。


请注意,当您在 Visual Studio 中编译它时,错误窗口将列出您的代码中的错误以及说明。您可以双击每个错误,它会将您直接带到导致错误的行。这应该使弄清楚如何修复代码变得相当简单,一次一个错误。

于 2012-09-21T20:22:15.847 回答
1

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

于 2012-09-21T20:24:37.320 回答
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; 
    } 
}

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

于 2012-09-21T20:25:23.410 回答
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 轻松做到这一点,但如果您正在学习,最好坚持语言基础知识。

于 2012-09-21T20:25:32.157 回答