二维数组

用idea编写的。
import java.util.Random;

/**
* 二维数组 (就是一维数组的嵌套)
* 1.定义:类型[][] 数组名=new 类型[行数][列数]
* int[][] a=new int[3][5];
* int a[][]=new int[3][5];
* int[] a[]=new int[3][5];
*2.元素引用:数组名[行号][列号]
* 行号和列号的下限为0
*/
public class ArrayDemo2 {
public static void main(String[] args) {
int[][] a = new int[5][5];
System.out.println(a);
System.out.println(a[0]);
System.out.println(a[1]);
System.out.println(a[2]);
//a[0]=new int[10];
//System.out.println(a[0]);
out(a);
System.out.println("----给二维数组赋随机值:");
setRandom(a);
out(a);
System.out.println("----找出以上二维数组每一行的最小值,并输出:");
int[] b=new int[a.length];
findMin(a,b);
out(b);
System.out.println("----数组转置:");
ZhuanZhi(a);
out(a);
System.out.println("----输出杨辉三角:");
int[][] x=new int[10][];//为节约内存,二维数组可以不定义成行列相等
YangHui(x);
out(x);
}
//杨辉三角:
/**
* 规则:1.每一行的第一列和最后一列的值均为1;
* 2.当前数值=同列上一行的数值+前一列上一行的数值
*/
static void YangHui(int[][] x) {
for (int i = 0; i < x.length; i++) {
x[i]=new int[i+1];//先写出数组结构:一个下三角
x[i][0] = 1;//每一行的第一列为1
x[i][i] = 1;//每一行的最后一列为1
}
for (int i=2;i<x.length;i++) { //因为从第2行才需开始计算
for (int j = 1; j < i; j++) {
x[i][j] = x[i - 1][j] + x[i - 1][j - 1];//当前数值=同列上一行的数值+前一列上一行的数值
}
}
}

//创建矩阵二维数组,实现行列互换(转置)
static void ZhuanZhi(int[][] a){
for (int i=0;i<a.length;i++){
for (int j=0;j<i;j++){
int t=a[i][j];a[i][j]=a[j][i];a[j][i]=t;
}
}
}



//比较二维数组每一行最小值并输出到一维数组中去:
static void findMin(int[][] a,int[] b) { //在a数组中调用,存入b数组中

for (int i=0;i<a.length;i++){
int min=a[i][0];
for (int j=0;j<a[i].length;j++){
if (a[i][j]<min) min=a[i][j];
}
b[i]=min;
}
}
static void out(int[] a){
for (int e:a){
System.out.print(e+" ");
}
System.out.println();
}


//给数组a赋100以内的随机值:
static void setRandom(int[][] a){
Random r=new Random();
for (int i=0;i<a.length;i++){
for (int j=0;j<a[i].length;j++){
a[i][j]=r.nextInt(100);
}
}

}

//输出数组a的所有元素:
static void out(int[][] a) {
for (int i = 0; i < a.length; i++) { //a.length算的是行数的长度,即i<3
for (int j = 0; j < a[i].length; j++) {
System.out.print(a[i][j] + " ");
}
System.out.println();//换行显示
}
}

}



运行结果如下:

[[I@1540e19d
[I@677327b6
[I@14ae5a5
[I@7f31245a
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
----给二维数组赋随机值:
53 89 71 88 2
52 64 5 79 29
10 17 55 16 82
73 58 39 28 23
30 68 14 62 39
----找出以上二维数组每一行的最小值,并输出:
2 5 10 23 14
----数组转置:
53 52 10 73 30
89 64 17 58 68
71 5 55 39 14
88 79 16 28 62
2 29 82 23 39
----输出杨辉三角:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
1 8 28 56 70 56 28 8 1
1 9 36 84 126 126 84 36 9 1



posted @ 2018-01-30 14:42  叫我小谷  阅读(206)  评论(0编辑  收藏  举报