黑马程序员技术交流社区

标题: 各位师兄师姐好!谁来帮我看看这个问题?程序为何不能..... [打印本页]

作者: 向阳花    时间: 2015-3-25 13:00
标题: 各位师兄师姐好!谁来帮我看看这个问题?程序为何不能.....

class  Demo
{
        public static void main(String[] args)
        {
                int[] arr={3,4,1,8};
               
                int max=getMax(arr);
                System.out.println("max="+arr[max]);
        }

        public static int getMax(int[] arr)
        {
                int max=0;
                for (int x=1;x<=arr.length;x++ )
                {
                        if (arr[x]>arr[max])
                        max=x;
               }
       }
}


作者: zhqw_heima    时间: 2015-3-25 13:29
你下面的getMax函数为何没有返回值,没返回值你如何获取最大值
作者: 向阳花    时间: 2015-3-25 18:51
zhqw_heima 发表于 2015-3-25 13:29
你下面的getMax函数为何没有返回值,没返回值你如何获取最大值

返回值复制的时候漏掉了,代码是这样的:
  1. class  Demo
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 int[] arr={3,4,1,8};
  6.                
  7.                 int max=getMax(arr);
  8.                 System.out.println("max="+arr[max]);
  9.         }

  10.         public static int getMax(int[] arr)
  11.         {
  12.                 int max=0;
  13.                 for (int x=1;x<arr.length;x++ )
  14.                 {
  15.                         if (arr[x]>arr[max])
  16.                         max=x;
  17.                 }
  18.                 return arr[max];
  19.         }
  20. }
复制代码
运行结果是这样的:

作者: zhqw_heima    时间: 2015-3-26 11:39
向阳花 发表于 2015-3-25 18:51
返回值复制的时候漏掉了,代码是这样的:
运行结果是这样的:

你这个提示是数组角标溢出异常,你 for (int x=1;x<arr.length;x++ ),你这个应该是 x<arr.length-1
作者: 向阳花    时间: 2015-3-27 22:00
起初我也认为是这样,可是试过之后发现还是同样的错误提示。在这个数组中,arr.length=4,如果设置为x<arr.length-1,也就是x<3,x最大值可以取到2,数组中最后一个元素角标是3,这样还是不对的。
作者: 向阳花    时间: 2015-3-27 22:03
zhqw_heima 发表于 2015-3-26 11:39
你这个提示是数组角标溢出异常,你 for (int x=1;x

起初我也认为是这样,可是试过之后发现还是同样的错误提示。在这个数组中,arr.length=4,如果设置为x<arr.length-1,也就是x<3,x最大值可以取到2,数组中最后一个元素角标是3,这样还是不对的。





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