黑马程序员技术交流社区
标题:
关于局部变量和全局变量的问题 求助!
[打印本页]
作者:
刘菲
时间:
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中变量的定义方式有问题,注意注释内容,看代码:
public static void arrayM(int[] arr)
{
//将max和min定义在这
int max=arr[0];//初始化的动作不可以再循环内部,
//而且循环内部写上int max/min相当于定义for循环内的局部变量,
int min=arr[0]; //这样输出语句中的max和min就没有初始化了。报错
for(int x=0;x<arr.length;x++)
{
if(arr[x]>max)
max=arr[x];
}
System.out.println("max="+max);
for(int x=0;x<arr.length;x++)
{
if(arr[x]<min)
min=arr[x];
}
System.out.println(",min="+min);
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2