2

我是 C# 新手。我一直在研究这个程序并进行研究,但一无所获。目标是让用户输入数字(多少取决于用户)。当他们输入 0 时,它将停止程序并显示输入的最小数字、输入的最大数字以及输入的所有数字的平均值。我没有得到任何错误,我得到了。如果有人可以请指出我正确的方向。

WriteLines 正在返回:

最小数字为 0 最大数字为 0 平均值为:0 计数:5

这是我的代码:

int LOWEST =0;
int HIGHEST=0;
const int STOP = 0;
double average = 0;
int input;

int count = 0;
Console.WriteLine("Enter a number. You can end the program at anytime by entering 0");
input = Convert.ToInt32(Console.ReadLine());
while (input != STOP)
{
     for (int i=0; input != STOP; i++)
     {
           Console.WriteLine("Enter a number. You can end the program at anytime by entering 0");
           input = Convert.ToInt32(Console.ReadLine());
           count++;
           var Out = new int[] { input };
           LOWEST = Out.Min();
           HIGHEST = Out.Max();
           average = Out.Average();

           if ((input > LOWEST) || (input < HIGHEST))
           {
                 LOWEST = Out.Min();

           }
           if (input > HIGHEST)
           {
                 HIGHEST = Out.Max();
           }
      }
}


Console.WriteLine("Lowest number is {0}", LOWEST);
Console.WriteLine("Highest number is {0}", HIGHEST);
Console.WriteLine("Average is {0}", average);
Console.WriteLine("Count: {0}", count);
Console.ReadLine();
4

3 回答 3

6

在每次运行时,您都在构造一个新的整数数组:

var Out = new int[] { input };

在这一行之后,Out 包含一项:最后一个输入。调用Min, MaxandAverage将返回最后一个值。如果您结束程序,则为零。

您不想每次都创建一个新数组,而是希望List<int>在程序的开头创建一个,然后将每个输入添加到它。然后,您可以使用整个值列表来计算Min和。MaxAverage

最终,您可以将代码更改为以下内容:

const int STOP = 0;
int input = -1;

List<int> Out = new List<int>();

while (input != STOP)
{
    Console.WriteLine("Enter a number. You can end the program at anytime by entering 0");
    input = Convert.ToInt32(Console.ReadLine());

    if (input == STOP) break;

    Out.Add(input);

}


Console.WriteLine("Lowest number is {0}", Out.Min());
Console.WriteLine("Highest number is {0}", Out.Max());
Console.WriteLine("Average is {0}", Out.Average());
Console.WriteLine("Count: {0}", Out.Count);
Console.ReadLine();
于 2013-10-16T20:27:00.507 回答
2
List<int> numbers = new List<int>();
        numbers.Add(10);
        numbers.Add(30);
        numbers.Add(20);
        numbers.Add(0);
        numbers.Max();
        numbers.Min();
        numbers.Average();

返回 30、0 和 15。

于 2013-10-16T20:33:17.700 回答
1

在循环之前,您可能应该创建Out一个类似于数组的可扩展数据结构,即List.

List<int> Out = new List<int>();

然后每个循环,你可以

Out.Add(input);

由于这听起来像是对读者的练习,因此您可以遍历您的列表并计算所有数据值的平均值。


或者,在循环之前,您可以声明

int n = 0;
int total = 0;

和每个循环,做

n += 1;
total += input;

根据这些,您应该能够轻松计算平均值。

于 2013-10-16T20:29:51.630 回答