一,定义:在java中是没有二维数组的,所谓二维数组,其实就是一维数组中的数组,就像三个人走在路上,这三个人就是一维数组,每个人身上有三个兜,兜其实就是二维数组,每个兜里有三个盒子,那么盒子就是三维数组,每个盒子中都有糖果,则糖果就是数组中存放的数据。同理就有四维,五维…
不同数据类型中的初始值:

int[]  //0
String[]  //null
char[]   //空格
boolean  //false
double[]   //0.0
byte[]   //0

打印二维数组的基本格式:

Java二维数组边界问题 java二维数组例题_i++


二,杨辉三角

1
11
121
1331
14641
15101051

规律就是设行为a,列为b,每行的第一个和每行的最后一个都是1,其他有规律如下;

[a][b]=[a-1][b-1]+[a-1][b]

既然知道了规律,则代码如下:

Java二维数组边界问题 java二维数组例题_Java二维数组边界问题_02

int a[][]=new int[10][10];
  for (int i = 0; i < a.length; i++) {  
   a[i][0]=1;
   a[i][i]=1;
  }
  for (int i = 2; i < a.length; i++) {  
   for (int j = 1; j < a.length; j++) {
    if(j!=0||j!=i){
     a[i][j]=a[i-1][j-1]+a[i-1][j];
    }
   }
  }
  for (int i = 0; i < a.length; i++) {   
   for (int b = 0; b <=i; b++) {
    System.out.print(a[i][b]+"\t");
   }
   System.out.println();
  }

练习:有一个数组

int[]a={10,20,30,40,50,0}

现在在数组中插入一个数字并且按照从小到大的顺序输出,此时的0只表示了一个位置。

分析:如果说直接插入的话,会覆盖之前的数据,这个题就像是5个人坐在板凳上,有6个板凳,现在又多来了一个人,按照年龄大小,年龄大的整体往后挪下,腾出个空位给年龄小的坐。

Java二维数组边界问题 java二维数组例题_数组_03


练习:九宫图-------魔方矩阵(只有奇数宫格)

8   1   6
3   5   7
4   9   2

规律:1在第一行的最中间,根据1找其他数字的位置,上右,一旦发现位置被其他数据占了,立马下下左。如果上右,下下左到极致了,则上右从左出,下从上出…就像贪吃蛇。

int[][] a=new int[7][7];
  int x=0;
  int y=a.length/2; //奇宫格,a.length是偶数。
  a[x][y]=1;//定义1的位置
  for (int i = 2; i <=a.length*a.length; i++) {
   //拿着1的坐标去找2的坐标,上右
   //上
   x=x-1;
   if(x<0) x=a.length-1;//if只有一条语句可以省略括号
   //右
   y=y+1;
   if(y>a.length-1) y=0;
   
   if(a[x][y]!=0){//如果位置被占
    //下下左
    x=x+1;
    if(x>a.length-1) x=0;
    x=x+1;
    if(x>a.length-1) x=0;
    y=y-1;
    if(y<0) y=a.length-1;
    a[x][y]=i;
   }else{
    a[x][y]=i;
   }
  }
  //打印
  for (int i = 0; i < a.length; i++) {
   for (int j = 0; j < a[i].length; j++) {
    System.out.print(a[i][j]+"\t");
   }
   System.out.println();
  }
 }

Java二维数组边界问题 java二维数组例题_二维数组_04


练习:冒泡排序:也就是先拿第一个数和后面的比较,如果大/小了,把值赋给它,再和后面的进行比较,依次循环。

Java二维数组边界问题 java二维数组例题_编程语言_05