黑马程序员技术交流社区

标题: 问个问题 [打印本页]

作者: 18643448863    时间: 2014-9-20 10:28
标题: 问个问题
  1. class GetMax
  2. {
  3.     public static int getMax(int [] arr)
  4.         {    int max=arr[0];
  5.                 for(int x=1;x<arr.length;x++)
  6.                         {
  7.                           if(arr[x]>max)
  8.                                 max=arr[x];
  9.                        
  10.                         }
  11.                 return max;
  12.         }
  13.         public static void main(String[] args)
  14.         {        int [] arr ={0,1,2,3,4};
  15.                 int max=getMax(arr);
  16.                 System.out.print("Max="+max);
  17.         }
  18. }
复制代码


为什么函数里面 定义的变量 int max=arr[0] 不能在 for 语句里 和x变量一起定义 如 for(int x,max=arr[0];x<arr.length;x++)编译后
GetMax.java:15: 错误: 找不到符号
                return max;
                       ^
  符号:   变量 max
  位置: 类 GetMax
作者: 18643448863    时间: 2014-9-20 10:29
  1. for(int x=1,max=arr[0];x<arr.length;x++)
复制代码


上面的写错 是这样 然后 出现问题
作者: jtshawn    时间: 2014-9-20 10:39
局部变量的问题,你如果在for的条件里定义了 max ,那么这个max在运行时就和循环体一起加载到栈内存里面,当循环体结束时,max也随着循环体弾栈,就是循环一结束,max也没有了,所以return  max;的是时候,就找不到max。
作者: 18643448863    时间: 2014-9-20 10:44
jtshawn 发表于 2014-9-20 10:39
局部变量的问题,你如果在for的条件里定义了 max ,那么这个max在运行时就和循环体一起加载到栈内存里面, ...

谢谢,我也有模糊的理解 ,每次知道怎么改,就是不是很清楚为什么,就有一种 就该这么改。改好之后就郁闷了,不知道咋想的




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