深圳幻海软件技术有限公司 欢迎您!

Java基础 二维数组简介

2023-03-30

一、二维数组的定义当一维数组元素的类型也是一维数组时,便构成了“数组的数组”,即二维数组。二维数组定义的一般格式:dataTypearrayName[length1][length2];其中,dataType为数据类型,arrayName为数组名,length1为第一维下标的长度,length2为第

一、二维数组的定义

当一维数组元素的类型也是一维数组时,便构成了“数组的数组”,即二维数组。二维数组定义的一般格式:

dataType arrayName[length1][length2];

其中, dataType 为数据类型, arrayName 为数组名, length1 为第一维下标的长度, length2 为第二维下标的长度。
我们可以将二维数组看做一个 Excel 表格,有行有列,length1 表示 行数 ,length2 表示列数,要在二维数组中定位某个元素,必须同时指明行和列。

例如:

int a[4][6];                                    

 

二、二维数组元素的引用

二维数组的数组元素引用与一维数组元素引用类似,区别在于二维数组元素的引用 必须给出两个下标 。
引用的格式为:

 arrayName[length1][length2];

例如:

int a[3][4];                                    

定义了一个 3 行 4 列的二维数组,共有 3×4=12 个元素,数组名为 a,即:

  1. a[0][0], a[0][1], a[0][2], a[0][3]
  2. a[1][0], a[1][1], a[1][2], a[1][3]
  3. a[2][0], a[2][1], a[2][2], a[2][3]

二维数组的行下标和列下标都从0开始;如果想表示第 1行第 1 列的元素,应该写作 a[0][0],第n行第m列对应数组元素a[n-1][m-1]

a[2][3]即表示第3行第4列的元素。

三、二维数组的初始化


​ 初始化为0:

​ ① 定义为全局变量,定义为全局变量的二维数组默认会被初始化为0。

​ ② int a[N][M]= {0}; 将所有N*M个元素全部初始化为0(只有初始化为0可以这么写)。

​ 初始化为其他值:

​ ① 全部初始化: 二维数组的每一行是一个一维数组,可以按照一维数组的方式初始化,最外层再加一个大括号“{}”。

​ 示例1:int a[3][2] = { {1, 2}, {4, 5}, {7, 8} } ; (内部大括号之间由英文逗号分隔)。

​ 示例2:char c[3][2] = { {'a', 'b'}, {'c', 'd'}, {'e', 'f'} } ;

​ ② 部分初始化:

​ 示例:int a[3][3] = { {1, 2}, {4, 5} }; (初始化第0行和第1行的前2个元素)。

四、二维数组的输入输出

​ 二维数组的输入:

 

 

​ 示例:读取3行2列的整数矩阵,存储到二维数组中:

  1. int a[5][5];
  2. for(int i=1; i<=3; i++)
  3. ​{
  4. for(int j=1; j<=2; j++)
  5. ​ {
  6. ​ cin>>a[i][j];
  7. ​ }
  8. ​}

​ 二维数组的输出:

 

​ 将上述矩阵保持原来的行和列原样输出。

  1. int a[5][5];
  2. for(int i=1; i<=3; i++)
  3. ​{
  4. for(int j=1; j<=2; j++)
  5. ​ {
  6. ​ cout<<a[i][j];
  7. ​ }
  8. ​}

五、逆序输出矩阵

 

  1. const int N=101,M=101;
  2. ​int n,m,a[N][M];
  3. ​int main()
  4. ​{
  5. ​ cin>>n>>m;
  6. for(int i=1; i<=n; i++)//从上往下一行一行读取
  7. ​ {
  8. for(int j=1; j<=m; j++)//从左往右一列一列读取
  9. ​ {
  10. ​ cin>>a[i][j];//存放于指定位置
  11. ​ }
  12. ​ }
  13. for(int i=n; i>=1; i--)//从最后一行往前读取
  14. ​ {
  15. for(int j=m; j>=1; j--)//从最后一列往左读取
  16. ​ {
  17. ​ cout<<a[i][j];
  18. ​ }
  19. ​ }
  20. return 0;
  21. ​}

文章知识点与官方知识档案匹配,可进一步学习相关知识
算法技能树首页概览42515 人正在系统学习中