伪代码:
判断要排序的是哪一列
对排序好的数组num[]进行遍历,用字符串数组中每一行对应位置的元素依次与num[]数组进行比较,相同则输出toSort数组
产品代码
package MySort;import
java.util.*;public class MySort {???
public void mysort(String []toSort,int a) {???????
System.out.println("Before sort:");???????
for (String str: toSort) {???????????
System.out.println(str);???????
}???????
int length = toSort.length;???????
if(a==0) {???????????
String [] num =new String[length];???????????
for(int i = 0;i<length;i++) {???????????????
num[i] =toSort[i].split(":")[a];???????????
}???????????
Arrays.sort(num);???????????
System.out.println("After sort:");???????????
for(int i = 0;i<length;i++) {???????????????
for(int j = 0;j<length;j++) {???????????????????
if(num[i].equals(toSort[j].split(":")[a])) {???????????????????????
System.out.println(toSort[j]);???????????????????
}???????????????
}???????????
}???????
}
else {???????????
int[] num = new int[length];???????????
for (int i = 0; i < length; i++) {???????????????
num[i] = Integer.parseInt(toSort[i].split(":")[a]);???????????
}???????????
Arrays.sort(num);???????????
System.out.println("After sort:");???????????
for (int i = 0; i < length; i++) {???????????????
for (int j = 0; j < length; j++) {???????????????????
if (num[i] == Integer.parseInt(toSort[j].split(":")[a])) {???????????????????????
System.out.println(toSort[j]);???????????????????
}???????????????
}???????????
}???????
}???
}
}
package MySort;
public class MySortTest {???
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"};???????
MySort mySort = new MySort();???????
int a = Integer.parseInt(args[0]);???????
mySort.mysort(toSort,a);???
}
}
第一列排序
第二列排序
第三列排序
第四列排序
学号.txt
文件GenNumer
,MyHead
和T2B
选择了字符输入输出流,B2T
选择了缓冲流,目的是为了读取文件中的行数学号.txt
中学号.txt
中读取内容,利用换行符将读取到的内容分隔,从命令行输入想要读取的行数,依次读取并输出学号.txt
中读取内容,读取前十行内容转化为二进制并输入至学号.bin
中,这里用到了toBinaryString
方法,作用是将十进制转化为二进制,这个方法在前面也用到过学号.bin
中读取内容,转化为十进制数输出至学号_1.txt
中,用到了bufferedReaded
类中的readLine()
和newLine()
方法GenNumber
MyHead
T2B
B2T
问题1:开始时将分隔后的内容都以字符串数组的形式储存,但在按照第四行升序排序时出现错误
解决:原因是sort方法只对第一位进行了升序排序,对于列中元素位数不同时会出现错误排序的情况,因此排序时分为了两种情况,当排序第一列时以字符串数组形式储存,其他列时以整型数组形式储存,但这样的代码只能适用于字符串数组已知的情况下
问题1:开始时在生成随机数选择用Math类中的Random()方法,但提示如下问题:
问题2:开始时选用了字节输入输出流,但发现不能以字符串的形式向文本中输入内容
问题3:在产生的20175209.txt
文件中发现只产生了一行数字
解决:在检查代码后认为应该是在换行时出现了问题,在网上搜索后发现在向文件中写入内容时的换行应该是"\r\n"而不是"\n"
20175209 《MySort》和《IO-myhead》选做
原文:https://www.cnblogs.com/wangzihong0213/p/10884293.html