黑马程序员技术交流社区

标题: 最大值问题 [打印本页]

作者: hel    时间: 2013-11-9 12:24
标题: 最大值问题
public static int getMax(int[] arr)
{
  int max = arr[0];
  for(int i=0;i<arr.length;i++)
  {
    if(arr[i]>arr[max])
      max = arr[i];       
  }       
  return max;
}
为什么回报错呢?程序在哪里出错了
作者: 咸鱼要吃猫    时间: 2013-11-9 12:29
public static int getMax(int[] arr)
{
  int max = arr[0];// 你这里定义的max是一个数组。
  for(int i=0;i<arr.length;i++)
  {
    if(arr[i]>arr[max])//你这里又把max当成角标数。
      max = arr[i];        //这里的max又变成数组了
  }        
  return max;
}
作者: Mr.Z.Lee    时间: 2013-11-9 12:29

  1. public static int getMax(int[] arr)
  2. {
  3.   int max = arr[0];
  4.   for(int i=0;i<arr.length;i++)
  5.   {
  6.     if(arr[i]>max)
  7.       max = arr[i];        
  8.   }        
  9.   return max;
  10. }
复制代码

作者: 卑微の小幸福    时间: 2013-11-9 12:59
这个哪去试试。就没错了
public static int getMax(int[] arr) {
        int max = arr[0];
        for (int i = 1;i<arr.length;i++ ) {//这而i要从1开始。不要自己和自己比呀
                if (arr[i]>max) {
                        max = arr[i];
                }
        }
        return max;//return  是for外返回
}
作者: 唐宋元明清    时间: 2013-11-9 13:04
int max = arr[0];       //max是一个数组元素的值。
if(arr[i]>arr[max])    //你把数组元素值当成角标使用很容易就角标越界异常

改成arr[i]>max即可。
作者: 梁健生    时间: 2013-11-9 13:15
public static int getMax(int[] arr)
{
   int max = arr[0];          //把数组中第一个元素赋值给最大值max
  for(int i=0;i<arr.length;i++)   
    //因为第一个元素已经被赋值,所以这里初始化条件可以改为i=1更好,但i=0不影响运行。
   {
     if(arr[i]>arr[max])    //这里是出问题的地方,改为arr[i]>max才对,max才是存储最大值的容器。
       max = arr[i];        
   }        
   return max;
}
作者: 黄炳期    时间: 2013-11-9 13:32
帖子已分类
作者: 楞个里格朗    时间: 2013-11-9 13:34
        public static int getMax(int[] arr)
        {
          int max = 0;
          for(int i=1;i<arr.length-1;i++)
          {
            if(arr[i]>arr[max])
              max = i;        
          }        
          return max;
        }
       
}
最后得出的结果是角标,需要确切的最大值的话放入arr[]打印即可





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2