【狂神說(shuō)Java】Java零基礎(chǔ)學(xué)習(xí)視頻通俗易懂

public class Test8 {
public static void main(String[] args) {
//創(chuàng)建棋盤(pán)數(shù)組 1表示白棋,2表示黑棋
int[][] array1 = new int[11][11];
array1[0][1] = 1;
array1[1][2] = 2;
array1[2][3] = 2;
System.out.println("遍歷輸出棋盤(pán):");
for (int[] ints : array1) { //使用增強(qiáng)for循環(huán),可直接輸出數(shù)組中元素,ints[anInt[]]
for (int anInt : ints) {
System.out.print(anInt+"\t");
}
System.out.println();
}
System.out.println("=========================================");
//創(chuàng)建存儲(chǔ)的稀疏數(shù)組
//1.首先計(jì)算出需要多少行
int sum = 0;
for (int i = 0; i < array1.length; i++) {
for (int j = 0; j < array1[i].length; j++) {
if (array1[i][j]!=0){
sum++;
}
}
}
System.out.println("有效數(shù)字:"+sum);
//2.用計(jì)算出的行創(chuàng)建稀疏數(shù)組
//行 列
int[][] array2 = new int[sum+1][3]; //sum+1是因?yàn)橐驯眍^包含在里面
//3.給表頭命名
array2[0][0] = 11; //第一行
array2[0][1] = 11; //第二行
array2[0][2] = sum; //第三行
//4.給數(shù)組賦值,分三列,需給每一列賦值
int count = 0;
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]; //第三列賦值,表示是哪個(gè)數(shù)字
}
}
}
//5.輸出稀疏數(shù)組
System.out.println("稀疏數(shù)組:");
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("=========================================");
//將稀疏數(shù)組還原成棋盤(pán)數(shù)組
System.out.println("還原:");
//1.創(chuàng)建還原數(shù)組
????//讀取稀疏數(shù)組表頭信息,自動(dòng)創(chuàng)建對(duì)應(yīng)大小數(shù)組
????int[][] array3 = new int[array2[0][0]][array2[0][1]];
????//2.遍歷稀疏數(shù)組,將稀疏數(shù)組中的內(nèi)容還原到當(dāng)前數(shù)組中
????for (int i = 1; i < array2.length; i++) {??????//i=1略過(guò)不存信息部分(表頭)開(kāi)始循環(huán)賦值
??????array3[array2[i][0]][array2[i][1]] = array2[i][2];
????}
????//還原完畢后遍歷輸出
????for (int[] ints : array3) {
??????for (int anInt : ints) {
????????System.out.print(anInt+"\t");
??????}
??????System.out.println();
????}
??}
}