黑马程序员技术交流社区

标题: 求查错 [打印本页]

作者: 王江涛    时间: 2014-4-18 23:49
标题: 求查错
本帖最后由 王江涛 于 2014-4-19 02:53 编辑

public class max
{
        public static int getmax(int[] arry)
        {
        int max=arry[0];
        for(int i=1;i<arry.length;i++)
                {
                if(arry>arry[0])
                        {
                        max=i;
                        }
                }
                        return arry[max];
}
public static void main(String[] args)
{
        int arr[]={8,28,5,7,21};
        int max=getmax(arr);
        System.out.println("数组arr[]的最大值是:"+max);
        }
}


为什么结果是21?

作者: 杨庆雷    时间: 2014-4-19 00:03
本帖最后由 杨庆雷 于 2014-4-19 00:11 编辑

  1. public class max
  2. {
  3.         public static int getmax(int[] arry)
  4.         {
  5.         int max=arry[0];
  6.         for(int i=1;i<arry.length;i++)
  7.                 {
  8.                 if(arry[i]>arry[0])// 每一次都拿后面的跟第一个比  只要是满足要求 就把i赋值给max 最后是arr[4] = 21
复制代码

  1.                    {
  2.                         max=i;
  3.                         }
  4.                 }
  5.                         return arry[max];
  6. }
  7. public static void main(String[] args)
  8. {
  9.         int arr[]={8,28,5,7,21};
  10.         int max=getmax(arr);
  11.         System.out.println("数组arr[]的最大值是:"+max);
  12.         }
复制代码
修改后代吗:
  1. public class Test3 {

  2.     public static int getmax(int[] arry) {
  3.             for(int i=0;i<arry.length-1;i++){
  4.                    
  5.                 if(arry[i]>arry[i+1]){
  6.                         arry[i+1] = arry[i];
  7.                 }
  8.             }
  9.         return arry[arry.length-1];
  10.     }
  11.         public static void main(String[] args){
  12.             int arr[]={8,28,5,7,21};
  13.             int max=getmax(arr);
  14.             System.out.println("数组arr[]的最大值是:"+max);
  15.     }
  16. }
复制代码




作者: 谢振宣    时间: 2014-4-19 01:11
  1. /*
  2. 需求:
  3. 求数组中的最大值

  4. 方法:
  5. 1.从数组中的第一个元素开始,同其后一个元素比较
  6. 2.将较大的元素的值后移,再同其后一个元素比较,以此类推
  7. 3最终得到的数组中的最后一个元素,即为该元素的最大值

  8. */
  9. public class Max
  10. {
  11.         public static int getMax(int[] array)
  12.         {
  13.                 int max = array[0];
  14.                 for (int i = 0;i < array.length-1;i++ )//后面会用到i+1,i的取值只能<数组.length-1
  15.                 {
  16.                         if (array[i] > array[i+1])
  17.                         {
  18.                                 int x = 0;//定义一个局部变量,用于数组元素的换位
  19.                                 x = array[i];
  20.                                 array[i] = array[i+1];
  21.                                 array[i+1] = x;
  22.                         }
  23.                 }
  24.                 return array[array.length-1];
  25.         }
  26.         public static void main(String[] args)
  27.         {
  28.                 int[] arr = {8,28,5,7,21};
  29.                 int max = getMax(arr);
  30.                 System.out.println("数组arr[]的最大值是:"+max);
  31.         }
  32. }
复制代码

作者: 王江涛    时间: 2014-4-19 01:45
杨庆雷 发表于 2014-4-19 00:03
修改后代吗:

谢了,原来比较代码写错了
作者: 微笑=.一瞬间    时间: 2014-4-19 17:21



public class max
{
        public static int getmax(int[] arry)
        {
        int max=arry[0];
        for(int i=1;i<arry.length;i++)
                {
                if(arry>arry[0])// 这个地方英爱写成arry[i]>arry[0] 而不是 你写的这样arry>arry[0],你写的这样就没办法比较前面是引用类型的 变量 后面是基本类型的变量。
                        {
                        max=i;
                        }
                }
                        return arry[max];
}
public static void main(String[] args)
{
        int arr[]={8,28,5,7,21};
        int max=getmax(arr);
        System.out.println("数组arr[]的最大值是:"+max);
        }
}




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