现在有这样一道题:
请求出二维数组各列之和:
可以套用二维数组按列求和的一般公式
for(int col =0; col < matrix[0].length ; col++){ //创建一个关于列的for循环 要算几列,col就小于几(因为col从0开始) int total = 0;//声明一个值,后面用来存储列的总和 for (int row = 0; row < martix.length; row++)//这是对行进行循环,比如当列为1时 /这个for就相当于matrix[0][1] +matrix[1][1] +matrix[2][1] +matrix[3][1] .... total += matrix[row][col]; System.out.println("Sum of col "+ col + " is " + total); }
但是这样的模板在实际应用的过程中是不完善的,
如果单纯套用上面的模板,编译器可能会报错
说可能会报错的原因是编译器有时会报
多数情况下是没有报错的,但这不代表我们写的全是对的,日后数组越界可能会造成很大的麻烦,因此在这里需要多留个心眼
之所以会报错是因为我们的for循环中i++,当i为2时,我们会进行判断2<?3,是的,2++,
此时i=3再进行判断,否,跳出循环,可我们不要忘了数组的长度只有3个,因此系统可接受i的范围就是0,1,2.没有3,3越过了数组的长度边界因此我们说它数组越界。
数组越界的解决方式非常简单
申请数组的时候比原来多一个,但是输入的时候还是按原来输入,也就是现在的长度减一个
数组初始化
就像这样,题目要我们3x4的数组,给他个4x5的数组
数组输入模板
这是一个二维数组输入的模板套用,不会的可以放慢点速度。
这里我们的length-1;因为我们申请的时候多一个,而我们用不到这么多,把它减掉。
要注意边界[0,length-1)
最后套用输出模板
数组后序的许多模板我也会一一放出来,
大家可以持续关注!