20162320MyOD重做版

博客说明

由于上次的MyOD.java没有得分,所以这次我重做了这个java,代码是自己完成的,请教了一些同学的思路。故补交一篇博客来说明我对每一步代码的编写的想法以及理解。

代码片段及理解

1.先创建一个text文件
1062815-20170609153418278-1374241017.png
2.由于涉及文件输出,故需要抛出IOException的异常。调用FileInputStream的类是通过创建一个到实际文件的连接,也就是读入字节流先前创建的text。

 public static void main(String[] args) throws IOException {   
        FileInputStream f1= new FileInputStream(args[0]);
        FileInputStream f2 = new FileInputStream(args[0]);

后期运行该代码时需在Edit Configurations指定文件text的路径
1062815-20170609154312903-1949298970.png
3.此段代码使用for循环设置行数,我根据text的内容设置了3行。在显示器的第一行要显示ASCII码,所以调用FileInputStream的read方法,扫入text的字符,当读到最后一个字符时会自动返回-1,所以用while在不等于-1时读文件。toHexString的方法是我求助其他同学得到的,即是把10进制的ASCii码转换为16进制的ASCii码,然后在每一个字符后加一个空格来设置断点。每次读完一个字符就b++,当一行字符读完14个时,就换行,即最后一行代码所示。

   int a, b = 0;
        for (int i = 0; i <= 3;i++){
            while ((a = f2.read()) != -1) { 
                System.out.print(Integer.toHexString(Integer.valueOf(a + "")) + " ");  
                b++;
                if (b == 15)
                    break;
            }
            System.out.println();

4.读入文件步骤同上,主要是(char)a这一步很关键,是因为a原本是10进制的ASCii码,如果不用(char),就会输出一些数字而非原本的字符。然后在后面加两个空格,因为读入文件是读一个字符,而对应的ASCII码是两个字符,所以要多空一个空格。

           int c = 0;
            while ((a = f1.read()) != -1) {
                c++;
                System.out.print((char) a + "  ");
                if (c == 15){
                    System.out.println();
                }
                if (c == 15)
                    break;

            }

码云地址

结果截图

1062815-20170609161116372-1658139666.png

实验感想

本次的代码我是完全理解及掌握的,没有像上次那样敷衍,虽然这个版本的MyOD还有一些漏洞,但是达到了基本的实验要求。

转载于:https://www.cnblogs.com/lxrlxr/p/6972336.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值