Java程序设计入门教程 -- 二维数组

二维数组创建

定义数组

    声明二维数组

        Java中二维数组的声明格式:

        数据类型名[ ][ ]   数组名;           数据类型名  数组名[ ][ ];

    分配数组内存

          常用格式:

          new  数组名[ M][N ] ;  //MN为数组行号和列号

    分配数组内存

          1)规则二维数组:可以直接为每行元素分配空间

double[][] b; 
b=new double[2][3]; 
double a[][]=new double[2][3];

           2)不规则二维数组:通常从首行开始,分别为每一行元素分配空间

int a[ ][ ]=new int[3][]; 
a[0]= new int[2]; 
a[1]= new int[3]; 
a[2]= new int[4]; 
Student s[ ][ ] = new Student[2][ ]; 
s[0]= new Student [1];
 s[1]= new Student [2]; 
s[0][0]= new Student();

    数组元素引用

           二维数组元素的引用格式为:   

                            数组名[元素行下标] [元素列下标]

注意,对于一个MN列的二维数组来说,其任何元素的行下标都只能在[0,M-1]的范围内取值,列下标只能在[0N-1]范围内取值。

比如:

        定义规则二维数组 
        int a[][]=new int[2][3];
        则其元素的引用:    a[0][0]  //ok       a[0][3]  //error
                                       a[0][2]  //ok       a[2][3]  //error

 

数组初始化

       二维数组初始化的时候,可以把每一行数据用一对{}括起,不同行数据间用逗号隔开。此时一个二维数组是否规则,完全依赖于其初始化数据的状况

int intArray_1[ ][ ]={{1,2},{2,3},{3,4}}; 
//定义了一个3行2列的规则二维数组,共有6个元素
int intArray_2[ ][ ]={{1,2},{2,3},{3,4,5}}; //定义了一个3行的不规
则二维数组,第一行2个元素,第二行2个元素,第三行3个元素,共7个元素

二维数组遍历

        对于二维数组的遍历,是指访问一个二维数组中的每一个元素。

        由于二维数组的数据排列具有行列关系,所以二维数组的长度(即length属性)实质上是指其包含的行数,而每一行的长度实质上是指该行数据包含的列数,访问格式如下:

                  数组名.length

                  数组名[行下标].length

通过访问数组长度和行长度,可以方便的遍历一个二维数组。

利用二重for循环访问数组长度和行长度,可以方便的遍历一个二维数组:
 

    int arr[][] = { { 1 }, { 2, 3 }, { 4, 5, 6 } };
    for (int x = 0; x < arr.length; x++) {
	for (int y = 0; y < arr[x].length; y++)
                          System.out.print(arr[x][y] + "、");
                System.out.println("");		
     }

案例:

       矩阵的转置,即将二维数组行列元素互换位置,形成一个新的二维数组存到另一个数组中

 

杨辉三角形

中国南宋数学家杨辉,在他所著的《详解九章算法》中提出了用于表示二项式展开后的系数构成的三角图形,称作“开方做法本源”,简称为“杨辉三角”。这比法国数学家帕斯卡发现的相同规律的“帕斯卡三角形”早300多年。杨辉三角形是中国数学史上的一个伟大成就。

import java.util.Scanner;
public class Test {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int n = scan.nextInt();
		int[][] sc = new int[n][n];
		for(int i=0;i<sc.length;i++) {
			for(int j=0;j<=i;j++){
				if(j==0||j==i) {
					sc[i][j]=1;
				}
				else {
					sc[i][j]=sc[i-1][j-1]+sc[i-1][j];
				}
			}
		}
		for(int i=0;i<n;i++) {
			for(int j=0;j<=i;j++) {
				if(j==0) {
					System.out.print(sc[i][j]);
				}
				else {
					System.out.print(" "+sc[i][j]);
				}
			}
			System.out.println();
		}
		scan.close();
	}
}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

信知阁

您的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值