Java-关于消除二维数组越界问题——以及n维推广

现在有这样一道题:

        请求出二维数组各列之和:

可以套用二维数组按列求和的一般公式

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)

 最后套用输出模板

 数组后序的许多模板我也会一一放出来,

大家可以持续关注!

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值