大学期间,大家通过VX和QQ向学委发送作业,但是一个班有几十个人,学委要接收几十份文件,如果一个一个对名单,那效率太低。有了这个程序,学委就可以快速检测到没有交作业的同学,非常方便。并且,本程序对于一些奇怪的作业文件命名方式的文件也可以运行。
使用步骤:先把作业文件都放进一个文件里。
File check = new File("C://rj2042") //输入作业文件夹的位置
然后输入班级人员姓名,一次输入长期使用。
String[] rj2042 = new String[]{"张三", "李四","赵六","王五"};//手动输入班上的人员姓名
接着就可以润了。
代码解析:
File check = new File("C://rj2042") //输入作业文件夹的位置
String[] strArray = check.list();//这里可以将文件夹里的文件名转成字符串存在数组中
for(int i=0;i< rj2042.length;i++){
for(int k=0;k< strArray.length;k++){
for(int j=0;j<strArray[k].length()/*根据姓名大致位置确定位置*/;j++) {
if (rj2042[i].charAt(0) == strArray[k].charAt(j) && rj2042[i].charAt(1) == strArray[k].charAt(j+1)) {
hahahaha[i]=rj2042[i];
}}}}
//这里嵌套了三层循环,时间复杂度有点大,但一个班几十个人,运算量不大,所以也是可以接受的。
//这里的算法有点像寻找两个数组中的公共子串的解题方法。再将相同的名字存入一个新的数组hahahaha
for (String str:hahahaha){
if(more.contains(str)){
more.remove(str);
}
}
//这里通过调用more.contains和more.remove两种方法来去掉两个数组里不同的元素,保留的就是没交作业的同学了。
全部的代码(直接可以跑):
package collect_homework;
import java.io.File;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
public class Collect_HomeWork {
public static void main(String[]age) {
File check = new File("C://rj2042")
{
};
String[] rj2042 = new String[]{"张三", "李四","赵六","王五"};名
Set<String> more = new HashSet<String>(Arrays.asList(rj2042));
System.out.println(check.isDirectory() + ":初始化完成");
String[] strArray = check.list();
String[] hahahaha = new String[60];
for(int i=0;i< rj2042.length;i++){
for(int k=0;k< strArray.length;k++){
for(int j=0;j<strArray[k].length()/*根据姓名大致位置确定位置*/;j++) {
if (rj2042[i].charAt(0) == strArray[k].charAt(j) && rj2042[i].charAt(1) == strArray[k].charAt(j+1)) {
hahahaha[i]=rj2042[i];
}}}}
for (String str:hahahaha){
if(more.contains(str)){
more.remove(str);
}
}
System.out.println(more+"没交");
}
}