实际应用场景像开发五子棋游戏。
基本案例
使用二维数组输出以下图形
0 0 0 0 0 0
0 0 1 0 0 0
0 2 0 3 0 0
0 0 0 0 0 0
标志是两个中括号。
//基本案例 使用二维数组输出以下图形
//0 0 0 0 0 0
//0 0 1 0 0 0
//0 2 0 3 0 0
//0 0 0 0 0 0
public class TwoDimensionalArray {
public static void main(String[] args) {
int[][] arr = {{0,0,0,0,0,0},{0,0,1,0,0,0},{0,2,0,3,0,0},{0,0,0,0,0,0}};
for (int i = 0; i< arr.length; i++){ //得到二维数组中有多少个一维数组
for (int j = 0; j<arr[i].length;j++){ //得到一维数组中有多少个元素
System.out.print(arr[i][j] + "\t");
}
//换行
System.out.println("\n");
}
}
}
0 0 0 0 0 0
0 0 1 0 0 0
0 2 0 3 0 0
0 0 0 0 0 0
Process finished with exit code 0
注意print与println的区别。
print是不换行打印,println是换行打印。
动态初始化
语法:类型[][] 数组名 = new 类型 [大小][大小]
public class array10 {
public static void main(String[] args) {
int[][] arr = new int[2][3];
for (int i = 0; i<arr.length;i++){
for (int j = 0; j<arr[i].length; j++){
System.out.print(arr[i][j]);
}
System.out.println("\n");
}
}
}
000
000
Process finished with exit code 0
二维数组在内存中的存储
arr里存放的是一个地址,指向的里面存放了arr[0] 和arr[1] 。
在Java中,允许二维数组中,每个一维数组中元素个数可以不一致。
public class array11 {
public static void main(String[] args) {
int[][] arr = new int[3][];//由于个数不确定,所以不写即可
for(int i = 0; i<arr.length; i++){
//给每个一维数组开空间
arr[i] = new int[i+1];
//然后就可以遍历一维数组,给一维数组的每个元素赋值
for(int j = 0; j<arr[i].length; j++){
arr[i][j] = i+1;
System.out.print(arr[i][j]);
}
System.out.println("\n");
}
}
}
1
22
333
Process finished with exit code 0
静态初始化
public class array12 {
public static void main(String[] args) {
int[][] arr = {{1,2,3},{4,5,6},{7,8,9}};
for (int i = 0; i<arr.length; i++){
for (int j = 0;j<arr[i].length;j++){
System.out.print(arr[i][j]+" ");
}
System.out.println("\n");
}
}
}
1 2 3
4 5 6
7 8 9
Process finished with exit code 0
杨辉三角
使用二维数组打印一个10行的杨辉三角。
杨辉三角的特点:
1、第1行有1个元素,第n行有n个元素。
2、每一行第一个元素和最后一个元素都是1。
3、从第三行开始,对于非第一个和最后一个元素的值,都有arr[i][j] = arr[i-1][j]+arr[i-1][j-1]
//打印杨辉三角
// 1
// 1 1
// 1 2 1
// 1 3 3 1
// 1 4 6 4 1
// 1 5 10 10 5 1
public class array14 {
public static void main(String[] args) {
int[][] arr = new int[10][];
for (int i = 0; i<arr.length; i++){
arr[i] = new int[i+1];
for(int j = 0; j<arr[i].length; j++){
if (j == 0 || j == arr[i].length-1){
arr[i][j] = 1;
}else{
arr[i][j] = arr[i-1][j]+arr[i-1][j-1];
}
System.out.print(arr[i][j]+" ");
}
System.out.println("\n");
}
}
}
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
Process finished with exit code 0
二维数组也可以写成 int[ ] y[ ]。