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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© hel 中级黑马   /  2013-11-9 12:24  /  1275 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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;
}
为什么回报错呢?程序在哪里出错了

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1

查看全部评分

7 个回复

倒序浏览
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;
}

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1

查看全部评分

回复 使用道具 举报

  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. }
复制代码
回复 使用道具 举报
这个哪去试试。就没错了
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外返回
}

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1

查看全部评分

回复 使用道具 举报
int max = arr[0];       //max是一个数组元素的值。
if(arr[i]>arr[max])    //你把数组元素值当成角标使用很容易就角标越界异常

改成arr[i]>max即可。
回复 使用道具 举报
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;
}
回复 使用道具 举报
帖子已分类
回复 使用道具 举报
        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[]打印即可
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马