package array; import java.util.Arrays; public class ArrayDemo08 { public static void main(String[] args) { //1.创建一个二维数组 11*11 0:没有棋子 1;黑棋 2:白棋 int[][] array1 = new int[11][11];//二维数组的行数和列数 array1[1][2] = 1; array1[2][3] = 2; //输出原始的数组 //foreach循环:第一个for是打印每个数组(一维数组) 第二个for是打每个数组的元素(二维) //第一个for形式:二维数组名称.for回车即可eg.array1.for //第二个for形式: 二维数组的名称赋给一个名称.for eg.ints.for //可以理解为一维数组控制行数二维数组控制列数 //和增强for循环的梦幻联动 System.out.println("输出原始的数组"); for (int[] ints : array1) { for (int anInt : ints) { System.out.print(anInt+"\t");//注意是print 不是println } System.out.println();//空格!!!为了让一个数组在一行和15行配合着用 } System.out.println("===================================================="); //转换为稀疏数组保存 //1.获取有效值的个数 int sum = 0; for (int i = 0; i < 11; i++) { for (int j = 0; j < 11; j++) { if(array1[i][j]!=0){ sum++; } } } System.out.println("有效值的个数:"+sum); //2.创建一个稀疏数组的数组 /** * 行 列 有效值 * 11 11 2 * 1 2 1 * 2 3 2 */ int[][] array2 = new int[sum+1][3]; array2[0][0]=11; array2[0][1]=11; array2[0][2]=sum; //遍历二维数组,将非零的值,存放在稀疏数组中 int count = 0;//表示稀疏数组的行数 也可以把所有count去掉 for (int i = 0; i < array1.length; i++) { for (int j = 0; j < array1[i].length; j++) { if(array1[i][j] !=0){ count++; array2[count][0] = i; array2[count][1] = j; array2[count][2] = array1[i][j]; } } } //3.输出稀疏数组 System.out.println("输出稀疏数组"); for (int i = 0; i < array2.length; i++) { System.out.println(array2[i][0]+"\t" +array2[i][1]+"\t" + +array2[i][2]+"\t"); } System.out.println("================================================"); System.out.println("还原"); /** * */ // 1.读取稀疏数组的值 int[][] array3 = new int[array2[0][0]][array2[0][2]]; //2.给其中元素还原值 for (int i = 1; i < array2.length; i++) { array3[array2[i][0]][array2[i][1]] = array2[i][2]; } //3.打印 System.out.println("输出还原的数组"); for (int[] ints : array1) { for (int anInt : ints) { System.out.print(anInt+"\t");//注意是print 不是println } System.out.println();//空格!!!为了让一个数组在一行和15行配合着用 } } }
标签:完善,int,array2,稀疏,System,数组,println,out From: https://www.cnblogs.com/123456HHH/p/17878560.html