黑马程序员技术交流社区

标题: 写出优雅的代码 [打印本页]

作者: 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