黑马程序员技术交流社区
标题:
二维数组累加问题
[打印本页]
作者:
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
class Demo {
public static void main(String[] args) {
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[x].length;y++)//修改此处 二维数组遍历的时候为arr[x].length
{
sum = sum+arr[x][y];
}
}
System.out.println("sum="+sum);
}
}
复制代码
作者:
零下五度的水
时间:
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