黑马程序员技术交流社区

标题: 问一个基础的二维数组求和的小问题 [打印本页]

作者: 7jianpan    时间: 2014-7-23 22:55
标题: 问一个基础的二维数组求和的小问题
int[][] arr={{3,5,1,7},{2,3,8},{6,1,8,2}};
               
                for (int x=0;x<arr.length ;x++ )
                {
                        for (int y=0;y<arr[x].length;y++ )
                        {
                                int sum=sum+arr[x][y];
                        }
                }
                System.out.println("sum="+sum);

为什么这样编译就显示找不到sum
int[][] arr={{3,5,1,7},{2,3,8},{6,1,8,2}};
int sum=0;
                for (int x=0;x<arr.length ;x++ )
                {
                        for (int y=0;y<arr[x].length;y++ )
                        {
                                 sum=sum+arr[x][y];
                        }
                }
                System.out.println("sum="+sum);
这样就可以

作者: 张盼    时间: 2014-7-23 22:58
sum在里边的for循环里面定义的,作用范围只能在这个for 的{}里面,在外面不能使用
作者: space2007    时间: 2014-7-23 23:01
第一个中 你将sum定义在了for循环代码快内部,这时sum的作用域就是for循环,循环外边是访问不到的。
第二个的作用域是整个函数 就可以编译通过了
作者: 7jianpan    时间: 2014-7-24 20:54
张盼 发表于 2014-7-23 22:58
sum在里边的for循环里面定义的,作用范围只能在这个for 的{}里面,在外面不能使用 ...

哦,对,外面还有个打印语句,谢谢啦:handshake
作者: 7jianpan    时间: 2014-7-24 20:59
space2007 发表于 2014-7-23 23:01
第一个中 你将sum定义在了for循环代码快内部,这时sum的作用域就是for循环,循环外边是访问不到的。
第二个 ...

明白了,谢谢~:handshake
作者: icris    时间: 2014-7-24 21:34
int sum=sum+arr[x][y];
这一句要求定义一个 sum ,值是sum+arr[x][y],而这一句之前 sum 没有定义,所以“找不到(运算需要的)sum”

作者: 止询初衷    时间: 2014-7-24 21:48
局部变量的作用范围。。。。。。。。。。。。




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