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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© hel 中级黑马   /  2013-11-9 14:20  /  1474 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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);
}

为什么相加出来的结果,和用计算机算的结果不一样呀?

7 个回复

倒序浏览
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]

评分

参与人数 1技术分 +1 收起 理由
To + 1 赞一个!

查看全部评分

回复 使用道具 举报

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);
}
回复 使用道具 举报
  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. }
复制代码
回复 使用道具 举报
for(int y=0;y<arr.length;y++)  改成  for(int y=0;y<arr[x].length;y++)
二维数组内层的长度是 arr[index].length
回复 使用道具 举报
内层循环错了,
二维数组内循环控制行的列数,终值也就是arr[x].length、
回复 使用道具 举报
hubby 中级黑马 2013-11-9 17:45:45
7#
大哥,你粗心了  你的嵌套循环中内循环循环的是二维数组中每一个小数组,所以y是遍历每个小循环,
回复 使用道具 举报
hubby 中级黑马 2013-11-9 17:47:05
8#
我去  没回复完。。接上回复,你把y循环的循环改成arr[x].length就ok啦
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马