Java 二维数组(保存方式、遍历方式)

本文介绍了Java中二维数组的创建、输出(包括类型、内存地址、元素数据)、长度获取以及遍历的方法,通过实例展示了如何在随机位置存储特定字符并打乱顺序。
摘要由CSDN通过智能技术生成

二维数组就是“数组的数组”:保存N个一维数组,二维数组的每个数组元素的长度都不要求相同

二维数组的保存

二维数组通过int[][] array {{1,2,3},{11,21,31,41,51},{33,44,55,66,77,88,99},{0,0}};来保存数组

二维数组的输出

  • 直接打印二维数组,输出二维数组的类型和内存地址
  • Arrays.toString()方法,输出二维数组中每个一维数组的类型和内存地址
  • Arrays.deepToString()方法,输出二维数组的所有元素数据
  • 二维数组的长度:该二维数组中所包括的一维数组的个数
  • 通过一个下标,访问二维数组中的指定一维数组
  • 通过2个下标,访问二维数组中的指定元素(指定一维数组的指定下标元素)
import java.util.Arrays;

public class Test {
	public static void main(String[] args) {
		//一维数组:保存1组数据
		int[] arr1 = {1,2,3,4};
		int[] arr2 = {11,21,31,41,51};
		int[] arr3 = {13,15,16,23,25,27};
		System.out.println(arr1);
		
		//二维数组:保存N组数据(每组数据都是一个一维数组)
		int[][] array = {
				{1,2,3,4},
				{11,21,31,41,51},
				{13,15,16,23,25,27},
				{33,44,55,66,77,88,99},
				{0,0}
		};
		System.out.println("二维数组的类型和内存地址:"+array);
		System.out.println("二维数组的所有一维数组:"+Arrays.toString(array));
		System.out.println("二维数组的所有元素数据:"+Arrays.deepToString(array));
		System.out.println("二维数组的长度:"+array.length);
		System.out.println("二维数组的头数组:"+Arrays.toString(array[0]));
		System.out.println("二维数组的头数组中的头元素:"+array[0][0]);
	}
}

运行结果:

[I@5e265ba4
二维数组的类型和内存地址:[[I@156643d4
二维数组的所有一维数组:[[I@123a439b, [I@7de26db8, [I@1175e2db, [I@36aa7bc2, [I@76ccd017]
二维数组的所有元素数据:[[1, 2, 3, 4], [11, 21, 31, 41, 51], [13, 15, 16, 23, 25, 27], [33, 44, 55, 66, 77, 88, 99], [0, 0]]
二维数组的长度:5
二维数组的头数组:[1, 2, 3, 4]
二维数组的头数组中的头元素:1

二维数组的遍历

和一维数组一样使用for循环或者foreach进行遍历

import java.util.Arrays;

public class Test {
	public static void main(String[] args) {
		//遍历二维数组
		int[][] array = {
				{1,2,3,4},
				{11,21,31,41,51},
				{13,15,16,23,25,27},
				{33,44,55,66,77,88,99},
				{0,0}
		};
		//方式1:使用下标
		for(int i = 0;i < array.length;i++) {
			for(int k = 0;k <array[i].length;k++) {
				System.out.print(array[i][k]+"\t");
			}
		}
		System.out.println();
		//方式2:使用foreach
		for(int[] ns: array) {
			for(int n : ns) {
				System.out.print(n+"\t");
			}
			System.out.println();
		}
	}
}

运行结果:

1	2	3	4	11	21	31	41	51	13	15	16	23	25	27	33	44	55	66	77	88	99	0	0	
1	2	3	4	
11	21	31	41	51	
13	15	16	23	25	27	
33	44	55	66	77	88	99	
0	0	

例题:随机位置存储1个H,2个S,3个X,其余位置填充O,生成该二维数组中的值

解:创建一个二维数组;打乱9次(k不止控制打乱的次数);打乱ns数组,将打乱后的数组存入一个新的us数组中,并循环放入map的第i行;遍历的输出这个二维数组

import java.util.Arrays;
public class Test11 {
	public static void main(String[] args) {
		char[][] map = new char[9][9];
	      for (int k = 0; k < 9; k++) {
	    	  char[] ns = {'H', 'S', 'S', 'X', 'X', 'X', 'O', 'O', 'O'};
	          for (int i = ns.length - 1; i > 0; i--) {
	              int index = (int) (Math.random() * i);
	              ns[index] = (char) (ns[index] ^ ns[i]);
	              ns[i] = (char) (ns[index] ^ ns[i]);
	              ns[index] = (char) (ns[index] ^ ns[i]);
	          }
	          //将打乱后的数组存入一个新的us数组中,并循环放入map的第i行
	          char[] us = new char[9];
	          System.arraycopy(ns, 0, us, 0, us.length);
	          map[k] = us;
	      }
	      //遍历的输出这个二维数组
	      for (char[] chs : map) {
	          for (char c : chs) {
	        	  System.out.printf(c + "\t");
	          }
	          System.out.println();
	      }
	}
}

运行结果:

X	X	O	S	O	X	S	O	H	
S	S	O	X	O	O	X	X	H	
X	H	O	O	S	O	S	X	X	
X	X	O	O	O	S	X	H	S	
X	O	O	S	S	H	X	O	X	
O	X	S	O	X	H	S	O	X	
S	O	X	X	X	O	S	O	H	
O	X	O	H	S	S	O	X	X	
X	O	H	O	S	X	X	O	S	

  • 17
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值