一、MySort
1.题目要求
- 模拟实现Linux下Sort -t : -k 2的功能。
- 要有伪代码,产品代码,测试代码(注意测试用例的设计)
- 参考 Sort的实现。提交博客链接。
2.产品代码
import java.util.*;
public class MySort {
public static void main(String [] args) {
String [] toSort = {"aaa:10:1:1",
"ccc:30:3:4",
"bbb:50:4:5",
"ddd:20:5:3",
"eee:40:2:20"};
System.out.println("Before sort:");
for (String str: toSort) {
System.out.println(str);
}
int [] a = new int[toSort.length];
for (int i = 0; i < toSort.length; i++){
String [] tmp = toSort[i].split(":");
a[i] = Integer.parseInt(tmp[1]);
}
Arrays.sort(a);
System.out.println("After sort:");
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < toSort.length; j++) {
if (a[i] == Integer.parseInt((toSort[j].split(":"))[1])) {
System.out.println(toSort[j]);
}
}
}
}
}
3.设计思路
- 首先将所输入的字符串放入一个数组当中
- 输出排序前
- 将字符穿中的第二列数字一次录入另外一个数组a[]中并调用程序对第二列进行排序额
- 将排序好的数组依次输出完成
4.实验截图
二、IO-myhead
1.题目要求
- 编写代码GenNumber.java生成一个文本文件 “你的学号.txt”, 一共“你的学号的后三位行”,每行一个数字,该数字是1-你的学号后四位的一个随机数,提交代码和生成文件
- 研究linux的head命令, 实现head -n 的功能MyHead.java, 用“你的学号.txt”进行测试,执行 java MyHead n 打印“你的学号.txt”前n行
- 编写T2B.java, 将 “你的学号.txt”的前十行转化成二进制文件“你的学号.bin” ,可以用Linux 下od命令或Windows下的winhex工具查看转化结果,提交代码和生成文件
- 编写B2T.java, 将 “你的学号.bin”的转化成文本文件“你的学号.txt”, 每行除了有数据外,还要添加行号,提交代码和生成文件
- 课上无法完成的课下完成需要答辩
2.设计思路
- 首先建立学号.txt 文件
- 选则文件输入输出的方法,这里GenNumer ,MyHead 和T2B 选择了字符输入输出流,B2T选择了缓冲流,目的是为了读取文件中的行数
- 将生成的随机数写入学号.txt 中
- 从学号.txt 中读取内容,利用换行符将读取到的内容分隔,从命令行输入想要读取的行数,依次读取并输出
- 从学号.txt 中读取内容,读取前十行内容转化为二进制并输入至学号.bin 中,这里用到了toBinaryString 方法,作用是将十进制转化为二进制,这个方法在前面也用到过
- 从学号.bin 中读取内容,转化为十进制数输出至学号_1.txt 中,用到了bufferedReaded 类中的readLine() 和newLine() 方法
3.实验代码
import java.io.*;
import java.util.Random;
public class GenNumber {
public static void main(String[] args) {
String filepath = System.getProperty("user.dir");
filepath += "\\20175329.txt";
System.out.println(filepath);
try {
File file = new File(filepath);
if (!file.exists()) { //如果不存在data.txt文件则创建
file.createNewFile();
System.out.println("20175329.txt创建完成");
}
FileWriter fw = new FileWriter(file); //创建文件写入
BufferedWriter bw = new BufferedWriter(fw);
//产生随机数据,写入文件
Random random = new Random();
for (int i = 1; i < 329; i++) {
int randint = (int) Math.floor((random.nextDouble() * 5329.0));
bw.write(String.valueOf(randint)); //写入一个随机数
bw.newLine(); //新的一行
}
bw.close();
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
4.实验截图