zoukankan      html  css  js  c++  java
  • 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还有一些漏洞,但是达到了基本的实验要求。

  • 相关阅读:
    机器学习笔记之K近邻算法
    [C++基础]在子类中向父类的构造函数传递参数的小例子,包括类中常量的初始化
    POJ2709 染料贪心
    POJ2337 欧拉路径字典序输出
    POJ2337 欧拉路径字典序输出
    POJ1042 贪心钓鱼
    POJ3228二分最大流
    POJ3228二分最大流
    POJ3498最大流,枚举终点,企鹅,基础最大流
    POJ3498最大流,枚举终点,企鹅,基础最大流
  • 原文地址:https://www.cnblogs.com/lxrlxr/p/6972336.html
Copyright © 2011-2022 走看看