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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 霍明波 中级黑马   /  2012-9-28 17:16  /  2083 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 霍明波 于 2012-9-28 17:18 编辑

public class Test8 {
        public static void main(String[] args){
                int[] arr = {1,2,3,4,5,6};
                System.out.println("MAX="+getMax(arr));
                System.out.println("MIN="+getMin(arr));
        }
        private static int getMax(int[] arr){
                int temp = 0;
                for(int x=1;x<arr.length;x++){
                        if(arr[x]>arr[temp])
                                arr[temp] = arr[x];
                }
                return arr[temp];
        }
        private static int getMin(int[] arr){
                int temp = 0;
                for(int x=1;x<arr.length;x++){
                        if(arr[x]<arr[temp]){
                                temp = x;
                        }
                }
                return arr[temp];
        }
}
为什么结果输出 MAX=6
                       MIN=2呢,不解,求详细原因

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

8 个回复

正序浏览
public class Test8 {
        public static void main(String[] args){
                int[] arr = {1,2,3,4,5,6};
                System.out.println("MAX="+getMax(arr));
                for(int aa:arr)
                        System.out.println(aa);
                System.out.println("MIN="+getMin(arr));
        }
        private static int getMax(int[] arr){
                int temp = 0;
                for(int x=1;x<arr.length;x++){
                        if(arr[x]>arr[temp])
                                arr[temp] = arr[x];
                }
                return arr[temp];
        }
        private static int getMin(int[] arr){
                int temp = 0;
                for(int x=1;x<arr.length;x++){
                        if(arr[x]<arr[temp]){
                                temp = x;
                        }
                }
                return arr[temp];
        }
}


你认真看看 多的那两行代码! 并且看看执行后的结果 你就会明白是怎么回事了 !
你在执行getMax(arr);   后  将arr[]变成了 {6,2,3,4,5,6}  这个数组的最小值当然是2.

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

回复 使用道具 举报
王玉岩 黑马帝 2012-9-28 17:56:29
8#
public class Test8 {
        public static void main(String[] args){
                int[] arr = {1,2,3,4,5,6};
                System.out.println("MAX="+getMax(arr));
                System.out.println("MIN="+getMin(arr));
        }
        private static int getMax(int[] arr){
                int temp = 0;
                for(int x=1;x<arr.length;x++){
                        if(arr[x]>arr[temp])
                             //   arr[temp] = arr[x];//这个地方应该改成如下temp=x;因为如果是arr[temp]=arr[x]这样的话会改变原数组的数据
                                                temp=x;  //这样的话就没问题了 你可以试一下
                }
                return arr[temp];
        }
        private static int getMin(int[] arr){
                int temp = 0;
                for(int x=1;x<arr.length;x++){
                        if(arr[x]<arr[temp]){
                                temp = x;
                                                        //arr[temp]=arr[x];
                        }
                }
                return arr[temp];
        }
}

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 杨卫腾 于 2012-9-28 17:52 编辑
  1. class Test8
  2. {
  3.         public static void main(String[] args){
  4.                 int[] arr = {1,2,3,4,5,6};
  5.                 System.out.println("MAX="+getMax(arr));
  6.                 System.out.println("MIN="+getMin(arr));
  7.         }
  8.         private static int getMax(int[] arr){
  9.                 int temp = 0;
  10.                 for(int x=1; x<arr.length;x++){
  11.                         if(arr[x]>arr[temp])
  12.                                 temp = x;
  13.                 }
  14.                 return arr[temp];
  15.         }
  16.         private static int getMin(int[] arr){
  17.                 int min = 0;
  18.                 for(int x=1; x<arr.length; x++){
  19.                         if(arr[x]<arr[min]){
  20.                             min = x;
  21.                         }
  22.                 }
  23.                 return arr[min];
  24.         }
  25. }
复制代码
以上是我修改后的代码,是正确的。

这是由于你的求最大值的时候,对数组进行了修改导致了,
数组变成了 arr = {6,2,3,4,5,6}

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

回复 使用道具 举报
柳彬 发表于 2012-9-28 17:39
大哥,for(int x=1;x

是这个原因吗?
回复 使用道具 举报
覃宏海 发表于 2012-9-28 17:31
public class Test8 {
         public static void main(String[] args){
                 int[] arr = { ...

你试验过吗?我的怎么不行呢

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

回复 使用道具 举报
arr[temp] = arr[x];//你这句话覆盖了arr[0]的值,使arr[0]为最大值。这里应改成 temp=x;

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

回复 使用道具 举报
大哥,for(int x=1;x<arr.length;x++)这里应该改成for(int x=0;x<arr.length;x++),这种小错误都犯,有点粗心哦
                     

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

回复 使用道具 举报
public class Test8 {
         public static void main(String[] args){
                 int[] arr = {1,2,3,4,5,6};
                 System.out.println("MAX="+getMax(arr));
                System.out.println("MIN="+getMin(arr));
         }
         private static int getMax(int[] arr){
                 int temp = 0;
                 for(int x=1;x<arr.length;x++){-----------------------------------------你把这2个地方改成0看看!数组角标是从0开始的!
                         if(arr[x]>arr[temp])
                                 arr[temp] = arr[x];
                 }
                 return arr[temp];
         }
         private static int getMin(int[] arr){
                 int temp = 0;
                 for(int x=1;x<arr.length;x++){
                         if(arr[x]<arr[temp]){
                                 temp = x;
                         }
                }
                 return arr[temp];
         }
}
为什么结果输出 MAX=6
                        MIN=2呢,不解,求详细原因

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马