《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);
}
}