您的位置:首页 > 编程语言 > Java开发

Java数组(二维数组、多维数组)

2018-01-05 21:50 309 查看

二维数组

定义:

是个 保存相同数据类型(一维数组)的 容器


书写:

数据类型[][] 数组名 = 初值;


举例:

//  该二维数组中有3个一维数组 每一个一维数组的长度为4
int[][] array = new int[3][4];
//  打印二维数组的长度 相当于打印数组中有多少个元素
System.out.println(array.length);
//  定义方式二:可以吧数组中元素定义出来
/*
* 定义一个二维数组
* 二维数组中 有3个一维数组
* 1,2,3,4 / 2,34,234,11 / 23,44,66,55
*/

//  三行四列
int[][] array = new int[][]{
{1, 2, 3, 4},
{2, 34, 234, 11},
{23, 44, 66, 55}
};
//  遍历数组
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();
}


多维数组:

定义:

是 保存 多个相同数据类型(二维数组)的 容器


举例:

//  有两个二维数组 每个二维数组中 有三个一维数组 每个一维数组有四个元素
//int[][][] arr = new int[2][3][4];
//  定义一个三维数组 [2][2][3]{}
//  2层2行3列的 三维数组 --- 羊肉串
int[][][] arr = new int[][][] {
{
{1, 2, 3},
{1, 2, 4},
},
{
{2, 3, 4},
{1, 4, 5},
}
};
//  遍历数组
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 = 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 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();
}
}


//  有8个一维数组 每个一维数组中有10个元素
//  array[1][9] --- 出口
//  array[1][1] d ---> array[1][1] == ' '
//                ---> array[1][2] == '0'
//  array[1][2] s ---> array[2][2] == '0'
char[][] array = {
//y   0   1   2   3   4   5   6   7   8   9
{'#','#','#','#','#','#','#','#','#','#'},//0 - x
{'#','0',' ',' ',' ',' ','#','#',' ',' '},//1
{'#','#',' ','#','#','#','#','#',' ','#'},//2

4000
{'#',' ',' ',' ',' ','#','#','#',' ','#'},//3
{'#',' ','#','#',' ','#',' ',' ',' ','#'},//4
{'#',' ','#','#',' ','#',' ','#','#','#'},//5
{'#',' ',' ',' ',' ',' ',' ','#','#','#'},//6
{'#','#','#','#','#','#','#','#','#','#'},//7
};
//  打印地图
printArray(array);
//  声明要用的变量(起始坐标 结束坐标)
int x = 1;
int y = 1;
//  结束
int ex = 1;
int ey = 9;
Scanner scanner = new Scanner(System.in);
//  循环输入
while (array[ex][ey] != '0') {
//  提示输入w a s d
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] = ' ';
//  向左移动 修改坐标 + 1
y = y + 1;
//  新位置 变成 '0'
array[x][y] = '0';
}
break;
default:
break;
}
//  修改完毕后 再打印一遍地图
printArray(array);
}
System.out.println("恭喜你通关了");
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java