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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘菲 中级黑马   /  2012-11-22 00:01  /  1386 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 刘菲 于 2012-11-22 10:06 编辑

想要进行数组中最大值和最小值得求取,但是很纠结变量应该定义哪?
下面是代码:
public class ArrayM
{
        //如果将max和min定义在这,则arrayM中的输出语句中的max和min会报错
        /*
        int max;
        int min;
        */
        
        public static void main(String[] args)
        {
                int[] arr={1,2,3,4,5};
                arrayM(arr);
        }
                public static void arrayM(int[] arr)
                {
                        //将max和min定义在这,则for语句中的max和min会报错。
                        int max;
                        int min;
                        for(int x=0;x<arr.length;x++)
                        {
                                int max=arr[0];
                                if(arr[x]>max)
                                max=arr[x];        
                        }
                        System.out.println("max="+max);
                        for(int x=0;x<arr.length;x++)
                        {
                                int min=arr[0];
                                if((int)arr[x]<min)
                                min=arr[x];
                        }
                        System.out.println(",min="+min);
                        
                }        
        
}

不明白为什么已经把变量定义成全局的了,为什么在局部中相同的变量还会报错?
求解答!

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

2 个回复

倒序浏览
本帖最后由 倪鹏博 于 2012-11-22 00:36 编辑

max,min最好不要定义成全局变量!
尽管max,min已经被定义成全局变量,但是方法arrayM之中同样定义了max,min局部变量,那么在这个方法内部max,min实际指代的是局部变量!全局变量形同虚设!
报错问题在于arrayM中变量的定义方式有问题,注意注释内容,看代码:
  1.    public static void arrayM(int[] arr)
  2.                 {
  3.                         //将max和min定义在这
  4.                         int max=arr[0];//初始化的动作不可以再循环内部,
  5.                                                 //而且循环内部写上int max/min相当于定义for循环内的局部变量,
  6.                         int min=arr[0]; //这样输出语句中的max和min就没有初始化了。报错
  7.                         for(int x=0;x<arr.length;x++)
  8.                         {
  9.                                 if(arr[x]>max)
  10.                                 max=arr[x];        
  11.                         }
  12.                         System.out.println("max="+max);
  13.                         for(int x=0;x<arr.length;x++)
  14.                         {
  15.                                 if(arr[x]<min)
  16.                                 min=arr[x];
  17.                         }
  18.                         System.out.println(",min="+min);
  19.                         
  20.                 }   
复制代码

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

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