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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 18643448863 中级黑马   /  2014-9-20 10:28  /  1034 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  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

3 个回复

倒序浏览
  1. for(int x=1,max=arr[0];x<arr.length;x++)
复制代码


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

谢谢,我也有模糊的理解 ,每次知道怎么改,就是不是很清楚为什么,就有一种 就该这么改。改好之后就郁闷了,不知道咋想的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马