20162320MyOD重做版

博客说明

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

代码片段及理解

1.先创建一个text文件

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的路径

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;

            }

码云地址

结果截图

实验感想

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

posted @ 2017-06-09 16:09  润润大魔王  阅读(171)  评论(0编辑  收藏  举报