Java数组之二维数组与多维数组
二维数组
二维数组也是个容器 保存的是 相同数据类型的一维数组
书写公式:
数据类型[][] 数组名 = 初值;
例如:
int[][] array = new int[3][4];
代表的是 这个二维数组中有3个一维数组
这3个一维数组有4个元素
System.out.println(array.length);
System.out.println(array[0].length);
第一方式二:可以把数组中元素定义出来
例如:
int[][] array = new int[][]{
{1, 2, 3, 4},
{2, 5, 6, 8},
{3, 5, 8, 11}
}
for(i = 0; i < array.length;i++){
for(j = 0; j < array[i].length; j++){
System.out.print(array[i][j] + " ");
}
System.out.println();
}
多维数组
三维数组 是一个容器
保存了多个 相同数据类型的二维数组
例如:
int [][][] array = new int[2][3][4];
有两个二维数组 每个二维数组 有3个一维数组 每个一维数组 有4个元素
定义一个三维数组[2][2][3]
int[][][] arr = new int[][][] {
{
{1, 2, 3},
{2, 3, 4}
},
{
{3, 4 ,5},
{4, 5, 6}
}
};
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
for (int k = 0; k < arr[i][j].length; k++) {
System.out.print(arr[i][j][k] + " ");
sum = arr[i][j][k] + sum;
}
System.out.println();
}
System.out.println();
}
System.out.println(sum);
拓展:二维数组小迷宫
二维数组迷宫
1.打印地图 --- 二维数组的遍历
初始坐标 array[1][1]
结束坐标 array[1][9]
2.如何让0走起来 switch 判断
通过修改 横纵坐标 让'0' 走起来
如何碰到墙'#' 不移动
可以先把要走的位置的元素取出来 判断一下 是不是墙
是墙 就不动 不是墙 再 进行移动
3.循环输入(循环的停止条件 就是结束坐标位置 从 ' ' 变成 '0')
如果有明确的 停止循环的条件时 用while循环 比较方便
public static void main(String[] args) {
char[][] array = {
{'#','#','#','#','#','#','#','#','#','#'},
{'#','0',' ',' ',' ',' ','#','#',' ',' '},
{'#','#',' ','#','#','#','#','#',' ','#'},
{'#',' ',' ',' ',' ','#','#','#',' ','#'},
{'#',' ','#','#',' ','#',' ',' ',' ','#'},
{'#',' ','#','#',' ','#',' ','#','#','#'},
{'#',' ',' ',' ',' ',' ',' ','#','#','#'},
{'#','#','#','#','#','#','#','#','#','#'},
};
printArray(array);
int x = 1;
int y = 1;
int ex = 1;
int ey = 9;
Scanner scanner = new Scanner(System.in);
while (array[x][y] != array[ex][ey]) {
System.out.println("请输入w a s d");
String string = scanner.nextLine();
switch (string) {
case "w":
if (array[x - 1][y] != '#') {
array[x][y] = ' ';
x = x - 1;
array[x][y] = '0';
}
break;
case "s":
if (array[x + 1][y] != '#') {
array[x][y] = ' ';
x = x + 1;
array[x][y] = '0';
}
break;
case "a":
if (array[x][y - 1] != '#') {
array[x][y] = ' ';
y = y - 1;
array[x][y] = '0';
}
break;
case "d":
if (array[x][y + 1] != '#') {
array[x][y] = ' ';
y = y + 1;
array[x][y] = '0';
}
break;
default:
break;
}
printArray(array);
}
System.out.println("你通关了");
}
public static void printArray(char[][] array) {
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[i].length; j++) {
System.out.print(array[i][j]);
}
System.out.println();
}
}
Day.3