public class xishuarray {
public static void main(String[] args) {
int[][] a = new int[11][9];
a[1][2] = 1;
a[2][3] = 2;
// 增强for循环
for (int[] ints : a) {
for (int anInt : ints) {
System.out.print(ints+"\t");
// ints数组储存的是a数组的地址值 anint是接受其数组地址所储存的数
System.out.print(anInt + "\t");
}
System.out.println();
}
int sum = 0;
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < a[i].length; j++) {
if (a[i][j] != 0) {
sum++;
}
}
}
// 稀疏数组得头部 第一行是0,有效值要加1
int[][] array = new int[sum + 1][3];
array[0][0] = a.length;
array[0][1] = a[0].length;
array[0][2] = sum;
// 稀疏数组得后半部方法
int count = 0;
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < a[i].length; j++) {
if (a[i][j] != 0) {
count++;
array[count][0]=i;
array[count][1]=j;
array[count][2]=a[i][j];
}
}
}
// 输出稀疏数组
System.out.println("输出稀疏数组");
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[i].length; j++) {
System.out.print(array[i][j]+"\t");
}
System.out.println();
}
// 还原稀疏属猪
int[][]array2= new int[array[0][0]][array[0][1]];//还原回有多少行多少列
for (int i = 1; i <array.length ; i++) {
array2[array[i][0]][array[i][1]]=array[i][2];
//array[i][0]表示第i行第一个数:代表array2的第几行 array[i][1]表示第i行第二个数:代表array2的第列行 array[i][2]表示第i行第三个数:代表array2的第这行这列的值
}
// 打印数组array2
for (int i = 0; i < array2.length; i++) {
for (int j = 0; j < array2[i].length; j++) {
System.out.print(array2[i][j]+"\t");
}
System.out.println();
}
}
}