黑马程序员技术交流社区
标题:
写出优雅的代码
[打印本页]
作者:
546540312
时间:
2019-3-28 11:52
标题:
写出优雅的代码
package com.itheima.HomeWork;
import java.io.*;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class Demo {
public static int count = 0;
public static void main(String[] args) throws IOException {
File firstFile =new File("d://考试成绩1.txt");
File secondFile =new File("d://考试成绩2.txt");
if(checkIsFile(firstFile,secondFile)){
/* 1. 现在有两个文件 ,分别是两个考试的 结果 ,需要让大家统计出来,
第一次考试成绩不及格,第二次考试成绩超过了70 分的同学 ,并且注意:第一次考试成绩的人,并不一定会出现在第二次考试成绩中*/
// 将file 给这个方法,这个方法将这些数据以map的方式返回给我
Map<String,Double> fisrtMap = putValueToMap(firstFile);
Map<String,Double> secondMap = putValueToMap(secondFile);
readMapAndCount(fisrtMap,secondMap);
System.out.println("一共有這麽優秀人"+count+"個");
}else{
System.out.println("这不是一个标准的格式");
}
}
private static void readMapAndCount(Map<String,Double> fisrtMap, Map<String,Double> secondMap) {
//第一次考试成绩不及格,第二次考试成绩超过了70 分的同学 ,并且注意:第一次考试成绩的人
/* if(第一次考试成绩 < 60 && 第二次考试成绩 > 70 && 第一个人.equals(第二个人)){
}*/
for(Map.Entry<String, Double> firstEntry : fisrtMap.entrySet()){
String firstKey = firstEntry.getKey();
Double firstValue = firstEntry.getValue();
//如果第一个map的key 在第二个map中有,那么我就进行操作
if(secondMap.containsKey(firstKey)){
//同一个人的第二次考试考试成绩
Double secondValue = secondMap.get(firstKey);
if( firstValue < 60 && secondValue > 70 ){
System.out.println("像這麽優秀的人是"+firstKey);
count++;
}
}
}
}
private static Map<String,Double> putValueToMap(File needFile) throws IOException {
BufferedReader br = new BufferedReader(new FileReader(needFile));
String len = null;
Map<String,Double> map = new HashMap<String,Double>();
while( (len = br.readLine()) != null){
// + 表示0个到多个 ,s 空格
String[] split = len.split("\\s+");
map.put(split[0],Double.valueOf(split[1]));
}
return map;
}
private static boolean checkIsFile(File firstFile, File secondFile) {
return firstFile.isFile()&& secondFile.isFile();
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2