A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© mosuge7 中级黑马   /  2013-5-29 23:07  /  2111 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 mosuge7 于 2013-6-3 22:21 编辑

我用一个方法来找出数组中的最大值。下面的编程有点错误,请指教

主函数里:
int[] nn = { 2, 4, 5, 6, 7, 9, 8 };
int max = Max(nn);
Console.WriteLine("最大的数是"+max);
Console.ReadKey();
方法:
public static int Max(params int[] num)
        {
            int max=num[0];
            for (int i = 0; i < num.Length; i++)
            {
                if (num < num[i + 1])
                {
                    max = num[i + 1];
                }
               
            }
            return max;
        }

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

6 个回复

倒序浏览
楼主你的Max方法应该改为下面的:
public static int Max(params int[] num)
        {
            int max=num[0];//假设数组中的第一个元素是最大值
            for (int i = 0; i < num.Length-1; i++)//楼主你的循环次数为(num.Length)这样数组的角标就会越界,循环次数为(num.Length-1)因为    数组中最大数的角标值为数组的长度减1
            {
                if (max < num[i])//用我们假定的最大值去与数组中的每一个元素经行比较
                {
                    max = num[i];//假如我们开始假定的最大值比数组中角标为i的元素的值小,则把我们开始假定的最大值用现在的值代替
                }
               
            }
            return max;//最后返回最大值
        }

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

回复 使用道具 举报
max=nn.max(p=>p);linq查多方便{:soso_e113:}
回复 使用道具 举报
这是我的一种较简单的改法:
  1. class Program
  2.     {
  3.         public static int Max(params int[] num)
  4.         {
  5.             int max = num[0];
  6.             for (int i = 0; i < num.Length; i++)
  7.             {
  8.                 if (max< num[i])
  9.                 {
  10.                     max = num[i];
  11.                 }

  12.             }
  13.             return max;
  14.         }

  15.         static void Main(string[] args)
  16.         {
  17.             int[] nn = { 2, 4, 5, 6, 7, 9, 8 };
  18.             int max = Max(nn);
  19.             Console.WriteLine("最大的数是" + max);
  20.             Console.ReadKey();
  21.         }
  22.     }
复制代码
你能看懂了吗?如果不懂,请回复,我再给你详细讲解。

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

回复 使用道具 举报
本帖最后由 许大虾 于 2013-5-30 12:41 编辑

帮你调试改完了, if (num < num[i + 1])  改成 if (num > max)  
代码:
  1. int[] nn = { 2, 4, 5, 6, 7, 9, 8 };
  2.             int max = Max(nn);
  3.             Console.WriteLine("最大的数是"+max);
  4.             Console.ReadKey();
  5.         }
  6.             public static int Max(params int[] num)
  7.             {
  8.             int max=num[0];
  9.             for (int i = 0; i < num.Length; i++)
  10.             {
  11.                 if (num[i] > max)  ////比较max这个元素是否比number这个元素大
  12.                 {
  13.                    max = num[i]; ////如果比这个大,就存到max中
  14.                 }
  15.                
  16.             }
  17.             return max;
  18.         }
复制代码

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

回复 使用道具 举报
.net的兄弟真给力,答题很详细,佩服, 以后有事情   或者没加分 给我留言或者看我的个性签名
回复 使用道具 举报
王盛 中级黑马 2013-5-31 17:08:31
7#
大道至简,没必要那么麻烦,其实将问题化繁为简,越简单越好(也就是代码量越少越好~!)我的做法是!   先写一个秋最大值的方法    /// <summary>
        /// 求最大值
        /// </summary>
        /// <param name="nn">用户的数组</param>
        /// <returns>返回值</returns>
        public static int Max(int []nn)
        {
          int max = nn[0];
            for (int i = 0; i < nn.Length; i++)
            {
                if (nn[i] > max)
                {
                    max = nn[i];
                }              
            }
            return max;
        }
    }



调用即可
int[] nn = { 2, 4, 5, 6, 7, 9, 8 };           
            Console.WriteLine("最大数是"+Max(nn ) );//调用方法
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马