java二维数组的扩容_Java开发笔记(二十一)二维数组的扩展

本文介绍了Java中二维数组的概念,以及如何声明、分配空间和初始化。通过实例展示了二维数组在表示平面坐标系中的应用,讲解了如何获取数组元素及遍历数组。还通过计算二维数组坐标点间的距离,演示了二维数组在计算几何问题中的应用。
摘要由CSDN通过智能技术生成

前面介绍的数组容纳的是一串数字,仿佛一根线把这组数字串了起来,故而它只是一维数组。一维数组用来表示简单的数列尚可,要是表达复杂的平面坐标系,那就力不从心了。由于平面坐标系存在水平和垂直两个方向,因此可用二维数组来保存平面坐标系上的一组坐标顶点,其中第一维是顶点队列,第二维是顶点的横纵坐标。许多个平面组合起来变成一幅动画,每个平面都构成动画的一个帧,这样就形成了三维数组。二维数组、三维数组,乃至更多维度的数组,统称为多维数组。多维数组全由一维数组扩展而来,它们的用法大同小异,因而只要学会如何使用二维数组,即可举一反三运用其他多维数组。下面就以二维数组为例,统一介绍多维数组的常见用法。

如同一维数组那样,二维数组也有两种声明形式,一种是在变量名称后面添加两对方括号,例如“double triangle[][]”;另一种是在类型后面添加两对方括号,例如“int[][] triangle”。前述的二维数组triangle表示平面坐标系上的三角形,其中第一对方括号表示这个三角形有几个顶点,第二对方括号表示每个顶点由几个坐标方向构成。

给二维数组分配存储空间也有三种方式,分别说明如下:

1、利用语句“new 变量类型[顶点数量][方向数量]”分配空间,比如三角形triangle有三个顶点,每个顶点由横纵两个坐标方向组成,则可通过下面这行语句实现:

// 在两对方括号内分别填入数字,表示数组有多少行多少列

triangle = new double[3][2];

2、在分配存储空间的时候立即对数组进行初始化赋值,此时方括号中间不填数字,而在方括号后面添加花括号,并且花括号内部是以逗号分隔的几个一维数组。此时初始化赋值的代码如下所示:

// 方括号内留空,然后紧跟花括号,花括号内部是以逗号分隔的几个一维数组

double[][] triangle = new double[][]{

new double[]{-2.0, 0.0},

new double[]{0.0, -1.0},

new double[]{2.0, 1.0}

};

3、可见上面的第二种写法实在啰嗦,完全可以参照一维数组的简化写法,把多余的“new double***”统统去掉,于是整个初始化代码精简如下:

// 赋值等号右边直接跟着花括号,花括号又内嵌好几个花括号分别表示对应的一维数组

double[][] triangle = { {-2.0, 0.0}, {0.0, -1.0}, {2.0, 1.0} };

以上的赋值等号右边直接跟着花括号,花括号里面又有三组花括号,每组花括号分别容纳两个数字。这便告诉编译器:该二维数组需要分配三个顶点,并且每个顶点都有两个坐标方向。

若要获取二维数组里面的某个元素,可采取“数组名称[元素行号][元素列号]”的形式,表示当前操作的是第几行第几列的数组元素。与一维数组不同的是,对于二维数组来说,“数组名称.length”不能获得所有元素的数量,而是获得该数组的行数;要想获取某行的列数,则需通过“triangle[行号].length”来得到,把所有行的列数累加起来,才能求得该二维数组的元素个数。下面是声明一个浮点型的二维数组,并对每个数组元素赋值,最后遍历打印各元素的完整代码例子:

// 以下是声明二维数组的第一种形式:“变量类型 数组名称[][]”

double triangle[][];

// 以下是分配二维数组空间的第一种形式

// 在两对方括号内分别填入数字,表示数组有多少行多少列

triangle = new double[3][2];

// 数组名称后面的“[数字1][数字2]”,就是数组元素的行列下标,表示当前操作的是第几行第几列的数组元素

triangle[0][0] = -2.0;

triangle[0][1] = 0.0;

triangle[1][0] = 0.0;

triangle[1][1] = -1.0;

triangle[2][0] = 2.0;

triangle[2][1] = 1.0;

// 下面通过循环语句依次读出数组中的所有元素。

// “二维数组名称.length”表示获取该数组的行数

for (int i=0; i

// “triangle[i].length”表示获取该数组第i行的列数

for (int j=0; j

// 打印第i行第j列的数组元素

System.out.println("triangle["+i+"]["+j+"]="+triangle[i][j]);

}

}

上述示例代码中的二维数组,存放了平面坐标系上的三个顶点,它们的坐标分别是(-2.0, 0.0)、(0.0, -1.0)、(2.0, 1.0)。这三个坐标点构成了一个三角形的三个顶点,正如下图所示的A点(坐标为(-2,0))、B点(坐标为(0,-1))、C点(坐标为(2,1))。

4271f6f8c85788ae452d298e5c18c8bc.png

看到了熟悉的平面坐标图,这下平面几何的知识可派上用场了,例如根据两点的坐标来计算两点之间的距离。既然三角形有三个顶点A、B、C,接下来不妨计算它的三条边长,包括AB、AC和BC三条边的长度。于是分别求得两个顶点在横轴方向的距离,以及在纵轴方向的距离,然后利用勾股定理算出连接两顶点的斜边长度。以下便是由二维数组保存的坐标数值求解三角形各边长的演示代码:

// 下面通过循环语句依次计算三角形每条边的长度

// 假设第一个数组元素代表点A,第二个数组元素代表点B,第三个数组元素代表点C,

// 则本循环将依次求得AB、AC、BC这三条边的长度

for (int i=0; i

for (int j=i+1; j

// 获取两个顶点在横轴方向的距离

double xDistance = Math.abs(triangle[j][0] - triangle[i][0]);

// 获取两个顶点在纵轴方向的距离

double yDistance = Math.abs(triangle[j][1] - triangle[i][1]);

// 根据勾股定理计算连接两顶点的斜边长度

double distance = Math.sqrt(xDistance*xDistance + yDistance*yDistance);

System.out.println("i="+i+",j="+j+",distance="+distance);

}

}

运行上述的演示代码,打印出来的三角形边长计算结果如下所示:

i=0,j=1,distance=2.23606797749979

i=0,j=2,distance=4.123105625617661

i=1,j=2,distance=2.8284271247461903

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值