二维数组
二维数组是个容器,保存的是相同数据类型的一维数组
书写公式:
数据类型[][] 数组名 = 初值;
定义方式一:
int[][] array = new int[3][4];
定义方式二:
int[][] array = new int[][] {
{1,2,3,4},
{2,34,234,11},
{23,44,66,44}
};
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();
}
![二维数组在内存中的表现](https://img-blog.csdn.net/20180105212736678?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvRHp5X3dhdGVy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
多维数组
三维数组是个容器,保存了多个相同数据类型的二维数组
书写公式:
数据类型[][][] 数组名 = 初值;
示例:
定义方式一:
int[][][] arr = new int[2][3][4];
定义方式二:
int[][][] arr = new int[][][] {
{
{1,2,3},
{5,11,20},
},
{
{23,44,66},
{19,23,42},
},
};
int sum = 0;
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];
}
System.out.println();
}
System.out.println();
}
System.out.println(sum);
二维数组之迷宫小游戏
步骤分析:
1.打印地图 ---- 二维数组的遍历
初始坐标 array[1][1]
结束坐标 array[1][9]
2.如何让0走起来
通过修改 横纵坐标 让'0'走起来
如何碰到墙 '#' 不移动
可以先把要走的位置元素 取出来判断一下 是不是墙
是墙就不动 不是墙再进行移动
3.循环输入(循环的停止条件 结束坐标位置 从' '变成'0')
如果有明确的停止循环的条件 就使用while循环比较方便
代码实现:
public static void main(String[] args) {
char[][] array = {
{'#','#','#','#','#','#','#','#','#','#'},
{'#','0',' ',' ',' ',' ','#','#',' ',' '},
{'#','#',' ','#','#','#','#','#',' ','#'},
{'#',' ',' ',' ',' ','#','#','#',' ','#'},
{'#',' ','#','#',' ','#',' ',' ',' ','#'},
{'#',' ','#','#',' ','#',' ','#','#','#'},
{'#',' ',' ',' ',' ',' ',' ','#','#','#'},
{'#','#','#','#','#','#','#','#','#','#'},
};
printMap(array);
int x = 1;
int y = 1;
int ex = 1;
int ey = 9;
Scanner scanner = new Scanner(System.in);
while (array[ex][ey] != '0') {
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 "a":
if (array[x][y - 1] != '#') {
array[x][y] = ' ';
y = y - 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 "d":
if (array[x][y + 1] != '#') {
array[x][y] = ' ';
y = y + 1;
array[x][y] = '0';
}
break;
default:
break;
}
printMap(array);
}
System.out.println("恭喜通关!");
}
public static void printMap(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();
}
}