解决方案 »

  1.   

    错误原因在下面代码注释。
    回答你是因为当初开始学的时候也有很多白痴的问题,希望能帮助你。
    提几点建议:1.问问题你可以把代码粘贴下来吗,搞个截图你是要我回来了拿去赚分吗
                            2.要是真的学编程,请注意几点:学会数组的操作,变量初始化,加断点调试int[] number = new int[5];//错误的关键在于4个数,你定个数组长度设为5干嘛。而且不初始化时大忌。
                                          //你要是初始化你就会发现 number[4]这个数你根本没赋值,系统帮你赋的0.
                for (int i = 0; i < 4; i++)
                {
                    Console.WriteLine("input {0} number", i+1);
                    number[i] = Convert.ToInt32(Console.ReadLine());
                }
                int sum, max, min;//新手从开始养成好习惯变量定义最好一行一个并进行初始化
                sum = comput(number, out max, out min);
                Console.WriteLine("sum is{0},min is{1},max is{2}", sum, min, max);
                Console.ReadKey();        }
            public static int comput(int[] number, out int max, out int min)
            {
                int sum = 0;
                max = number[0];
                min = number[0];
                for (int i = 0; i < number.Length; i++)//这里,循环5次。
                {
                    sum += number[i];
                    if (number[i] > max)
                    {
                        max = number[i];
                    }
                    else if (number[i] < min)  //还是好习惯,如果都是最大数了还执行这个判断干嘛,虽然是小细节,但是别做无用功
                    {
                        min = number[i];
                    }
                }
                return sum/number.Length;
            }
      

  2.   

    out用的挺好的,错误和out无关。
    感觉你说和out有关是你完全不懂加out是要干嘛的节奏啊。
      

  3.   

    问题在于,数组的长度是5,而你只给前4个赋了值,最后一个是默认值0,那么当然有0啦,调试得太不认真了,稍微看一下就能发现这个问题。另外,对你的代码有两点改进意见:
    1、在循环里多次采用下标访问数组,建议先存在一个变量里进行比较。
    2、对于有多个返回值的情况(2个以上),建议用一个类来包装返回结果。修改以后的代码如下:
    private static ComputeResult Compute(int[] numbers)
    {
        if (numbers == null)
            throw new ArgumentNullException("numbers");    int sum = 0, min = int.MaxValue, max = int.MinValue;    for (int i = 0; i < numbers.Length; i++)
        {
            int value = numbers[i];
            sum += value;        if (value > max)
                max = value;        if (value < min)
                min = value;
        }    return new ComputeResult(sum, min, max);
    }class ComputeResult
    {
        public ComputeResult(int sum, int min, int max)
        {
            _sum = sum;
            _min = min;
            _max = max;
        }    private int _sum;    public int Sum
        {
            get { return _sum; }
        }    private int _min;    public int Min
        {
            get { return _min; }
        }    private int _max;    public int Max
        {
            get { return _max; }
        }}// 调用代码var result = Compute(new int[] { 10, 20, 30, 40 });
    Console.WriteLine("最小值{0}, 最大值{1}, 合计{2}", result.Min, result.Max, result.Sum);