我是想模拟一个五子棋棋盘。在模拟的过程中做了如下操作。
创建一个二维数组,用来当做五子棋盘,0代表无子 1代表白子 2代表黑子。下棋后把该棋盘以稀疏数组的形式保存,最后把稀疏数组保存到本地磁盘。(稀疏数组可以节省磁盘空间。)
package com.wk.test; import java.io.*; /** * @author wk * @date 2019/10/2 15:18 */ public class SparseArray { public static void main(String[] args) throws IOException { //0代表无子 1代表白子 2代表蓝子 //原始数组 int [][] arr = new int[11][11]; arr[1][2] = 1; arr[2][3] = 2; arr[3][4] = 2; arr[5][7] = 1; //稀疏数组的行数 int sum = 1; for (int[] ints : arr) { for (int anInt : ints) { if (anInt != 0){ sum++; } } } //创建一个稀疏数组 int[][] sparseArr = new int[sum][3]; sparseArr[0][0] = 11; sparseArr[0][1] = 11; sparseArr[0][2] = sum-1; int count = 0; //填入稀疏数组的值 for (int i = 0; i < 11; i++) { for (int j = 0; j < 11; j++) { if (arr[i][j] !=0){ count++; sparseArr[count][0] = i; sparseArr[count][1] = j; sparseArr[count][2] = arr[i][j]; } } } //文件的路径 String str = "d:/sparse.txt"; File file = new File(str); //如果磁盘中该文件不存在,则创建该文件 if (!file.exists()){ file.createNewFile(); } //创建字符写入流对象 FileWriter fileWriter = new FileWriter(str); for (int i = 0; i < sparseArr.length; i++) { for (int j = 0; j < sparseArr[i].length; j++) { //写入每个字符 fileWriter.write(sparseArr[i][j]); } } //关闭写入流 fileWriter.close(); System.out.println("写入完毕"); //创建新的数组,来接收读取的数据 int [][] sparseArr2 = new int[sum][3]; FileReader fileReader = new FileReader(str); for (int i = 0; i < sparseArr2.length; i++) { for (int j = 0; j < sparseArr[i].length; j++) { //把读取的数据设置到数组中 sparseArr2[i][j] = fileReader.read(); } } //关闭读取流 fileReader.close(); } }