目录
题目要求A:提供的内容:B:最终的结果:C:编程思路(仅供参考):D:注意事项:相关代码如下:
题目要求
由于在线网课提交作业过多,为了减轻学委及老师统计未交学生名单,我们来写一段儿代码完成此需求!
A:提供的内容:
学生名单一份学生作业若干份,分别存储在”作业”文件夹中
B:最终的结果:
在”作业统计结果.txt” 中没有交作业的学生名字后边添加”未交作业”,已提交的名字后边添加”已提交”
C:编程思路(仅供参考):
1: 使用BufferedReader 读取原始名单并以<key,value> (<” 张三”,” 未交作业”>) 存入HashMap 中 2:使用File.list()方法获取提交作业文件夹(第四次作业)中的所有文件名字,并与HashMap中存储的原始名单做对比,并将对比结果存储在HashMap 中,如果交了作业则更新此名字对象的value 值,否则不执行任何操作 3:将更新完毕的HashMap 进行遍历并通过BufferedWriter 写入到指定的“作业统计结果.txt”文件中
D:注意事项:
在进行名字读取时可能会出现中文乱码,建议通过搜索”BufferedReader 和FileReader 读取txt 文件乱码” 来解决!
相关代码如下:
public static void main(String
[] args
) throws IOException
{
HashMap
<String, String> map
= null
;
InputStreamReader isr
= new InputStreamReader(
new FileInputStream("C:\\Users\\Desktop\\第2次大作业\\作业\\学生名单.txt"), "UTF-8");
BufferedReader br
= new BufferedReader(isr
);
map
= new HashMap<String, String>();
String line
= "";
while ((line
= br
.readLine()) != null
) {
map
.put(line
, "未提交作业");
}
File file
= new File("C:\\Users\\Desktop\\第2次大作业\\作业\\第四次作业");
String
[] names
= file
.list();
String name
= "";
for (String str
: names
) {
int end
= str
.lastIndexOf(".");
name
= str
.substring(0, end
);
map
.put(name
, "已提交");
BufferedWriter bw
= null
;
bw
= new BufferedWriter(new FileWriter("C:\\Users\\Desktop\\第2次大作业\\作业\\作业统计结果.txt"));
Iterator
<String> it
= map
.keySet().iterator();
while (it
.hasNext()) {
String key
= it
.next();
String value
= map
.get(key
);
bw
.write(key
+ "," + value
);
bw
.newLine();
}
if (br
!= null
)
br
.close();
if (bw
!= null
)
bw
.close();
}
}