黑马程序员技术交流社区

标题: 二维数组累加问题 [打印本页]

作者: hel    时间: 2013-11-9 14:20
标题: 二维数组累加问题
int[][] arr = {{1,3,5,8,},{13,4,7,3},{23,56,67,46}};
int sum=0;
for(int x=0;x<arr.length;x++)
{
         for(int y=0;y<arr.length;y++)
         {
                   sum = sum+arr[x][y];
                 }
        }
       
        System.out.println("sum="+sum);
}

为什么相加出来的结果,和用计算机算的结果不一样呀?
作者: 何丛    时间: 2013-11-9 14:52
for(int x=0;x<arr.length;x++)
{
         for(int y=0;y<arr.length;y++)
         {
                   sum = sum+arr[x][y];
                 }
        }
第二个for循环的循环条件y<arr.length;是错误的,应该是y<arr[x].length;即一维数组的长度。二维数组可以看成是几个一维数组,对二维数组进行累加时,外层循环控制条件是一维数组的个数,而内存循环控制条件则是每个一维数组的长度。但是你的程序内外层循环的控制条件都是一维数组的个数,都为3,所以累加时漏掉了arr[0][3]、arr[1][3]和arr[2][3]
作者: 寻丶丶觅    时间: 2013-11-9 14:52

int[][] arr = {{1,3,5,8,},{13,4,7,3},{23,56,67,46}};
int sum=0;
//arr.length 二维数组长度
for(int x=0;x<arr.length;x++)
{
         //arrarr[x].length 对应角标一维数组长度
         for(int y=0;y<arr[x].length;y++)
         {
                   sum = sum+arr[x][y];
                 }
        }
        
        System.out.println("sum="+sum);
}
作者: Sasson    时间: 2013-11-9 14:53
  1. class Demo {
  2.         public static void main(String[] args) {
  3.                
  4.                 int[][] arr = {{1,3,5,8,},{13,4,7,3},{23,56,67,46}};
  5.                 int sum=0;
  6.                 for(int x=0;x<arr.length;x++)
  7.                 {
  8.                                  for(int y=0;y<arr[x].length;y++)//修改此处  二维数组遍历的时候为arr[x].length
  9.                                  {
  10.                                                    sum = sum+arr[x][y];
  11.                                  }
  12.                 }
  13.                                
  14.                                 System.out.println("sum="+sum);
  15.         }
  16. }
复制代码

作者: 零下五度的水    时间: 2013-11-9 14:57
for(int y=0;y<arr.length;y++)  改成  for(int y=0;y<arr[x].length;y++)
二维数组内层的长度是 arr[index].length
作者: zdrain    时间: 2013-11-9 16:49
内层循环错了,
二维数组内循环控制行的列数,终值也就是arr[x].length、
作者: hubby    时间: 2013-11-9 17:45
大哥,你粗心了  你的嵌套循环中内循环循环的是二维数组中每一个小数组,所以y是遍历每个小循环,
作者: hubby    时间: 2013-11-9 17:47
我去  没回复完。。接上回复,你把y循环的循环改成arr[x].length就ok啦




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