二维数组

来源:互联网 发布:淘宝平均停留时间 编辑:程序博客网 时间:2024/06/16 05:43

                                        二维数组

二维数组:就是元素为一维数组的一个数组。

格式1:

    数据类型[][] 数组名 = new 数据类型[m][n];

            m:表示这个二维数组有多少个一维数组。

            n:表示每一个一维数组的元素有多少个。

注意:

           A:以下格式也可以表示二维数组

           a:数据类型 数组名[][] = new 数据类型[m][n];

           b:数据类型[] 数组名[] = new 数据类型[m][n];

           B:注意下面定义的区别

          int x;

          int y;

          int x,y;

          int[] x;

          int[] y[];

          int[] x,y[];

例:

public static void main(String[] args) {

 //定义一个二维数组

 int[][] arr = new int[3][2];

 //定义了一个二维数组arr

 //这个二维数组有3个一维数组的元素

 //每一个一维数组有2个元素

 //输出二维数组名称

 System.out.println(arr); //地址值 [[I@175078b

 //输出二维数组的第一个元素一维数组的名称

 System.out.println(arr[0]); //地址值 [I@42552c

 System.out.println(arr[1]); //地址值 [I@e5bbd6

 System.out.println(arr[2]); //地址值 [I@8ee016

 //输出二维数组的元素

 System.out.println(arr[0][0]); //0

 System.out.println(arr[0][1]); //0

}

格式2:

    数据类型[][] 数组名 = new 数据类型[m][];

            m:表示这个二维数组有多少个一维数组。

            列数没有给出,可以动态的给。这一次是一个变化的列数。

例:

public static void main(String[] args) {

//定义数组

int[][] arr = new int[3][];

System.out.println(arr); //[[I@175078b

System.out.println(arr[0]); //null

System.out.println(arr[1]); //null

System.out.println(arr[2]); //null

//动态的为每一个一维数组分配空间

arr[0] = new int[2];

arr[1] = new int[3];

arr[2] = new int[1];

System.out.println(arr[0]); //[I@42552c

System.out.println(arr[1]); //[I@e5bbd6

System.out.println(arr[2]); //[I@8ee016

System.out.println(arr[0][0]); //0

System.out.println(arr[0][1]); //0

//ArrayIndexOutOfBoundsException

//System.out.println(arr[0][2]); //错误

arr[1][0] = 100;

arr[1][2] = 200;

}

格式3:

          基本格式:数据类型[][] 数组名 = new 数据类型[][]{{元素1,元素2...},{元素1,元素2...},{元素1,元素2...}};

          简化版格式:数据类型[][] 数组名 = {{元素1,元素2...},{元素1,元素2...},{元素1,元素2...}};

举例:

          int[][] arr = {{1,2,3},{4,5,6},{7,8,9}};

         int[][] arr = {{1,2,3},{4,5},{6}};

例:

public static void main(String[] args) {

//定义数组

int[][] arr = {{1,2,3},{4,5},{6}};

System.out.println(arr);

System.out.println(arr[0]);

System.out.println(arr[1]);

System.out.println(arr[2]);

System.out.println(arr[0][0]); //1

System.out.println(arr[1][0]); //4

System.out.println(arr[2][0]); //6

System.out.println(arr[0][1]); //2

System.out.println(arr[1][1]); //5

//越界

System.out.println(arr[2][1]); //错误

}


遍历二维数组:

需求:遍历二维数组

两个明确:

返回值类型:void

参数列表:int[][] arr


public static void printArray2(int[][] arr) {

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();

}

}


杨辉三角:

分析:看这种图像的规律

A:任何一行的第一列和最后一列都是1

B:从第三行开始,每一个数据是它上一行的前一列和它上一行的本列之和。

步骤:

A:首先定义一个二维数组。行数如果是n,我们把列数也先定义为n。

  这个n的数据来自于键盘录入。

B:给这个二维数组任何一行的第一列和最后一列赋值为1

C:按照规律给其他元素赋值

从第三行开始,每一个数据是它上一行的前一列和它上一行的本列之和。

D:遍历这个二维数组。

public static void main(String[] args) {

//创建键盘录入对象

Scanner sc = new Scanner(System.in);

//这个n的数据来自于键盘录入。

System.out.println("请输入一个数据:");

int n = sc.nextInt();

//定义二维数组

int[][] arr = new int[n][n];

//给这个二维数组任何一行的第一列和最后一列赋值为1

for(int x=0; x<arr.length; x++) {

arr[x][0] = 1; //任何一行第1列

arr[x][x] = 1; //任何一行的最后1列

}

//按照规律给其他元素赋值

//从第三行开始,每一个数据是它上一行的前一列和它上一行的本列之和。

for(int x=2; x<arr.length; x++) {

//这里如果y<=x是有个小问题的,就是最后一列的问题

//所以这里要减去1

//并且y也应该从1开始,因为第一列也是有值了

for(int y=1; y<=x-1; y++) {

//每一个数据是它上一行的前一列和它上一行的本列之和。

arr[x][y] = arr[x-1][y-1] + arr[x-1][y];

}

}

//这个时候,要注意了,内循环的变化必须和曾经讲过的九九乘法表类似

for(int x=0; x<arr.length; x++) {

for(int y=0; y<=x; y++) {

System.out.print(arr[x][y]+"\t");

}

System.out.println();

}

}




原创粉丝点击