这是我尝试一些基本的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 :(得分: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,但如果您正在学习,最好坚持语言基础知识。