《Java程序设计》第15周课堂实践总结

《Java程序设计》第15周课堂实践总结

实践一 教材代码检查-p242

要求

在IDEA中或命令行中运行P242 StackTraceDemo2.java
代码运行结果和教材一致吗?为什么?

代码

/**
 * Created by crazymosquito on 2017/3/28.
 */
public class StackTraceDemo2 {
    public static void main(String[] args) {
        try {
            c();
        }catch (NullPointerException ex) {
            ex.printStackTrace();
        }
    }
    static void c() {
        try {
            b();
        }catch (NullPointerException ex) {
            ex.printStackTrace();
            throw ex;
        }
    }
    static void b() {
        a();
    }
    static String a() {
        String text=null;
        return text.toUpperCase();
    }
}

我的作答

有区别,因为包不同

我运行的结果是:at StackTraceDemo2.a(StackTraceDemo2.java:25)

教材上是:at cc.openhome.StackTraceDemo2.a(StackTraceDemo2.java:28)

教材代码上定义了包package cc.openhome;而我的代码则缺省了package的定义。

运行结果截图

实践二 MyOD

要求

编写MyOD.java 用java MyOD XXX实现Linux下od -tx -tc XXX的功能

提交测试代码和运行结果截图,加上学号水印,提交码云代码链接。

深入学习Linux下od命令

命令格式:

od [<选项><参数>] [<文件名>]

-t命令详解:

-t<TYPE>,--format=TYPE:指定输出格式,格式包括a、c、d、f、o、u和x,各含义如下:

a:具名字符;

c:ASCII字符或者反斜杠

d[SIZE]:十进制,正负数都包含,SIZE字节组成一个十进制整数;

f[SIZE]:浮点,SIZE字节组成一个浮点数;

o[SIZE]:八进制,SIZE字节组成一个八进制数;

u[SIZE]:无符号十进制,只包含正数,SIZE字节组成一个无符号十进制整数;

x[SIZE]:十六进制,SIZE字节为单位以十六进制输出,即输出时一列包含SIZE字节

代码

IO源代码(教材P305-306)

import java.io.*;

public class IO {
    public static void dump(InputStream src, OutputStream dest)
            throws IOException {
        try (InputStream input = src; OutputStream output = dest) {
            byte[] data = new byte[1024];
            int length;
            while ((length = input.read(data)) != -1) {
                output.write(data, 0, length);
            }
        }
    }
}

我的代码

IO.java:
/**
 * Created by hp430 on 2017/5/31.
 */
import java.io.*;

public class IO {
    public static void dump(InputStream src, OutputStream dest)
            throws IOException {
        try (InputStream input = src; OutputStream output = dest) {
            byte[] data = new byte[1024];
            int k=input.read(data,0,data.length);
            System.out.println(new String(data));
            for(int i=0;i<data.length;i++) {
                if(data[i]!=0) {
                    System.out.printf("%c ",data[i]);
                    if(i%16==0&&i!=0) {
                        System.out.println();
                    }
                }
            }
            System.out.println();
            int[] in=new int[data.length];
            for(int i=0;i<in.length;i++) {
                in[i]=data[i]&0xff;
            }
            for(int i=0;i<data.length;i++) {
                if(in[i]!=0) {
                    System.out.print(Integer.toString(in[i],0x10)+" ");
                    if(i%16==0&&i!=0) {
                        System.out.println();
                    }
                }
            }
            System.out.println();
            /*int length;
            while ((length = input.read(data)) != -1) {
                output.write(data, 0, length);
            }*/
        }
    }
}
MyOD20155314.java:
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

/**
 * Created by hp430 on 2017/5/31.
 */
public class MyOD20155314 {
    public static void main(String[] args) throws IOException {
        IO.dump(new FileInputStream(args[0]),System.out);
    }
}

运行结果截图

参考资料

posted @ 2017-05-31 17:05  20155314刘子健  阅读(265)  评论(0编辑  收藏  举报
Live2D