酸奶的Java学习日记 | 二维数组篇

这篇博客通过一个4*4二维数组的例子,讲解了如何使用Java进行二维数组的初始化、按行列输出、求最外圈元素之和以及找出主对角线中最大元素的方法。博主强调了理解数组索引和长度的重要性,并分享了在解决这些问题时遇到的错误及解决思路,鼓励读者在编程中加强独立思考和预先规划。
摘要由CSDN通过智能技术生成

前情提要

众所周知,数组,尤其是二维数组的索引是个令人着迷的小家伙,它经常把人迷的晕头转向,为了不再当史上无敌大迷糊,今天势必把索引与数组长度搞清楚。

索引 从0开始 (一定一定要记住是从0开始)

数组长度 正常数数,从一开始计数(应该没有哪个迷糊虫说自己吃了0个苹果吧Σ( ° △ °|||)︴ )

检测数组长度可以用Java中的length方法

int arr[]=new int [5];

这里的5就指的是数组长度。

例题

下面来几道我这个小白写了2个半小时写出来的题(实在是一言难尽……bug的生产者在此)

利用随机函数产生16个随机数,给一个4*4的二维数组赋值
按行列输出数组
求最外一圈元素之和
求主对角线中最大元素的值及其位置

利用随机函数产生16个随机数,给一个4*4的二维数组赋值

//        1.利用随机函数产生16个随机数,给一个4*4的二维数组赋值
        int array[][]=new int[4][4];
//        已知array.length=4

        Random r=new Random();
        for (int i=0;i<array.length;i++){
   
            for (int j=0;j<array[i].length;j++){
   
                int num = r.nextInt(100);
                array[i][j]=num;
            }
        }

1.这里已知数组长度,所以行和列可以都写上去

2.利用随机数随机产生数的特性,将数值范围设定到0~100,也就是
int num =r.nextInt(100);

3.利用循环,给每一个数组元素赋值

4.把二维数组看成是一个特殊的一维数组,array[i].length的含义也就显而易见了,它表示的是array数组第i行共有几列,也就是第i行共有多少个元素(是数组长度哦)

按行列输出数组

//        2.按行列输出数组
        for (int i=0;i<array.length;i++){
   
            for (int j=0;j<array[i].length;j++){
   
                System.out.print(array[i][j]+"\t");
            }
            System.out.println();
        }

这一步只需要双层for循环逐行输出即可,内层for循环结束代表一行输出完毕,需要在外层for循环执行换行操作。

\t 就相当于键盘上的Tab制表键,简洁美观 (u‿ฺu✿ฺ)

求最外一圈元素之和

初步设想
这个就上升难度了,首先来分析一下,一个一个元素加肯定是可以的,毕竟元素少嘛,就16个,抛去中间4个,简简单单呐~

但是,写代码不仅仅是为了解决眼下的问题,更是要体现出代码的特点——复用性。

所以挨个相加不是很好的样子……不行,咱换一个嘛。

我一开始是动了让所有元素相加到最后减去不需要元素的心思,毕竟减4个比加一整个外圈简单,考虑到复用性,我放弃了……

不就是外圈相加嘛,who怕who!!!
再步设想
外圈相加,也就是找到所有外圈元素所在位置的规律,这样问题就轻而易举解决了!

我为了找规律,还专门为此创作了一张惊天地泣鬼神的神作,如图所示……


呐,就是它,根据这张图,可以发现它的行和列都是有规律的在变化,我只需要写四个for循环把两行两列的所有数据加上就大功告成了!

所以我写出了漏洞百出的代码 (⊙﹏⊙)

以下代码块中行注释是解释说明步骤,块注释全是错代码,经过我仔细研究,仔细拿计算器相加(无意间暴露了什么),终于……发现问题出在哪了!

//        3.求最外一圈元素之和
//        3.1 求第一行的和 i不变 j变
        int sum=0;
//        array.length--4
//        array[0].length-1--3
       for 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值