尚硅谷Java数据结构和java算法,韩顺平数据结构和算法课后作业01

尚硅谷Java数据结构和java算法,韩顺平数据结构和算法课后作业第一题

要求:
1)在前面的基础上,将稀疏数组保存到磁盘上,比如map.data
2) 恢复原来的数组时,读取map.data进行恢复

就是利用了IO流

我们先写将数据写入到文件

File file = new File("d:/Spart.data");//文件对象
try {
            if (file.exists() == false) {//是否有指定文件,没有的话创建一个
                file.getParentFile().mkdir();
            }
            FileWriter fs = new FileWriter(file);
            for (int i = 0; i < Spartarray.length; i++) {
                for (int j = 0; j < 3; j++) {
                    fs.write(Spartarray[i][j] + "\t");
                }
                fs.write("\r");
            }
            fs.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

自己进行测试是可以成功的。
2.进行将文件的内容读进来
分析:虽然我们将数据存进去的时候是按行存进去的,假设我们这个时候另建立一个测试类,我们不知道文件当中有多少行,所以不知道创建多大的数组,那我们就先获得多少有多少行吧。

 BufferedReader in = new BufferedReader(new FileReader(file));
 String line;
 String line1;
int row0 = 0;//我的方法比较笨可能有更好的方法
while ((line = in.readLine()) != null) {
            String[] temp = line.split("\t");
            row0++;
        }

接下来我们可以创建数组并且将文件的内容读入数组中

/*为什么不用上次的in要自己新定义一个in1呢?
我之前这块用的上次的in,但是最后怎么都得不出值,因为此时的in是null,
因为in的作用就是判断当前行是否为空,
再上一个while的in的readline()已经是null了,所以要自己新定义一个。
如果需要加try可以在方法上抛出异常,这样就不用考虑局部变量不可用的问题*/
 int row1 = 0;
 String line1;
int Spartarray2[][] = new int[row0][3];
        BufferedReader in1 = new BufferedReader(new FileReader(file));
        while ((line1 = in1.readLine()) != null) {
            String[] temp = line1.split("\t");
            for (int m = 0; m < temp.length; m++) {
                Spartarray2[row1][m] = Integer.parseInt(temp[m]);
            }
            row1++;
        }
        in.close();
        for (int i = 0; i < row1; i++) {
            System.out.printf("%d\t%d\t%d\t\n", Spartarray2[i][0], Spartarray2[i][1], Spartarray2[i][2]);
        }
//然后可以将稀疏数组转换成二维数组
        int array2[][] = new int[Spartarray2[0][0]][Spartarray2[0][1]];
        for (int i = 1; i <= row1 - 1; i++) {
            array2[Spartarray2[i][0]][Spartarray2[i][1]] = Spartarray2[i][2];
        }
        for (int[] roww : array2) {
            for (int data : roww) {
                System.out.printf("%d\t", data);
            }
            System.out.println();
        }
  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java基础系列课程 ppt 和 源码 Java数据结构算法第七讲.avi Java数据结构算法第三十一讲.avi Java数据结构算法第三十七讲.avi Java数据结构算法第三十三讲.avi Java数据结构算法第三十九讲.avi Java数据结构算法第三十二讲.avi Java数据结构算法第三十五讲.avi Java数据结构算法第三十八讲.avi Java数据结构算法第三十六讲.avi Java数据结构算法第三十四讲.avi Java数据结构算法第三十讲.avi Java数据结构算法第九讲.avi Java数据结构算法第二十一讲.avi Java数据结构算法第二十七讲.avi Java数据结构算法第二十三讲.avi Java数据结构算法第二十九讲.avi Java数据结构算法第二十二讲.avi Java数据结构算法第二十五讲.avi Java数据结构算法第二十八讲.avi Java数据结构算法第二十六讲.avi Java数据结构算法第二十四讲.avi Java数据结构算法第二十讲.avi Java数据结构算法第八讲.avi Java数据结构算法第六讲.avi Java数据结构算法第十一讲.avi Java数据结构算法第十七讲.avi Java数据结构算法第十三讲.avi Java数据结构算法第十九讲.avi Java数据结构算法第十二讲.avi Java数据结构算法第十五讲.avi Java数据结构算法第十八讲.avi Java数据结构算法第十六讲.avi Java数据结构算法第十四讲.avi Java数据结构算法第十讲.avi Java数据结构算法第四十一讲.avi Java数据结构算法第四十三讲.avi Java数据结构算法第四十二讲.avi Java数据结构算法第四十四讲.avi Java数据结构算法第四十讲.avi 第一讲.exe 第三讲.exe 第二讲.exe 第五讲.exe 第四讲.exe
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值