【发布时间】:2020-04-02 19:50:19
【问题描述】:
任务是允许用户输入 0 到 100 之间的值。如果用户输入 -99,程序应该停止。一旦程序退出,必须计算平均值。但是,平均值应包括所有输入的值,输入的最小值(最小值)和输入的最大值(最大值)除外。我写了一个相当好看的代码,但是它抛出了一个IndexOutOfRangeException。
代码如下:
class Program
{
static void Main(string[] args)
{
DisplayApp();
Calculate();
}
static void DisplayApp()
{
Console.WriteLine("Grade Calculator: ");
Console.WriteLine();
}
static double Calculate()
{
Console.WriteLine("Enter grades (-99 to exit): ");
string input = Console.ReadLine();
int[] array1 = new int[] { };
int iInput = int.Parse(input);
int min = 100;
int max = 0;
int i = 0;
int sum = 0;
double average = 0;
while(iInput != 99)
{
if(iInput < min)
{
array1[i] = min;
}
else if(iInput > max)
{
array1[i] = max;
}
sum += iInput - (min + max);
i++;
}
average = (double)sum / i;
return average;
}
}
您认为为了使该程序能够正常运行,可以改进哪些方面?
【问题讨论】:
-
int[] array1 = new int[] { };创建一个大小为零的空数组。数组大小需要在创建时知道。对于动态数据,您可以使用List。 -
while(iInput != 99)应该是-99,不是吗... while 循环中应该有ReadLine...