黑马程序员技术交流社区

标题: 关于局部变量和全局变量的问题 求助! [打印本页]

作者: 刘菲    时间: 2012-11-22 00:01
标题: 关于局部变量和全局变量的问题 求助!
本帖最后由 刘菲 于 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);
                        
                }        
        
}

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

作者: 倪鹏博    时间: 2012-11-22 00:30
本帖最后由 倪鹏博 于 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.                 }   
复制代码





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