根据某三国游戏提供的武将资料,完成需求:

根据某三国游戏提供的武将资料,完成需求:

// 1.武力值排名前三的值是多少
// 2.求武力值最高3人名字
// 3.统计各个地区的武将
// 4.统计各个年龄段的武将 比如:10~19岁,20~29岁,30~39岁 40~49岁 50~59岁 60岁以上
// 5.统计各个年龄段的武将男女比例
// 6.统计平均年龄
// 7.统计平均年龄最高的地区

代码:

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.*;
import java.util.function.Consumer;

public class Test6 {
    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new FileReader("sanguo.txt"));
        TreeSet<String> set = new TreeSet<>();
        //TreeMap wjmap = new TreeMap<>();
        ArrayList<WuJiang> wjlist = new ArrayList<>();
        String wujiang = null;
        //将武将添加进集合
        while ((wujiang = reader.readLine()) != null) {
            set.add(wujiang);
        }
        for (String s : set) {
            String regx = "\\s+";
            String[] split = s.split(regx);
            //System.out.println(split.length);
            //if (split.length == 7) {
                WuJiang wu = new WuJiang();
                Integer of = Integer.valueOf(split[0]);
                wu.setName(split[1]);
                wu.setHometown(split[2]);
                wu.setSex(split[3]);
                wu.setStart(Integer.valueOf(split[4]));
                wu.setEnd(Integer.valueOf(split[5]));
                wu.setForceValue(Integer.valueOf(split[6]));
                wjlist.add(wu);
        }
        //1.求武力值排行前三的人和武力值。
        
            TreeMap<Integer, String> qiansan = new TreeMap<>(new Comparator<Integer>() {
                @Override
                public int compare(Integer o1, Integer o2) {
                    return o2 - o1;
                }
            });

            wjlist.forEach(new Consumer<WuJiang>() {
                @Override
                public void accept(WuJiang wuJiang) {
                    qiansan.put(wuJiang.getForceValue(), wuJiang.getName());
                }
            });
            System.out.println("武将战力前三: ");
            Set<Map.Entry<Integer, String>> entries = qiansan.entrySet();
            int c = 0;
            for (Map.Entry<Integer, String> entry : entries) {
                System.out.println(entry.getKey() + " " + entry.getValue());
                c++;
                if (c == 3) {
                    break;
                }
            }

        // 3.统计各个地区的武将

        TreeMap<String, Integer> map = new TreeMap<>();
        for (WuJiang jj : wjlist) {
            if (!map.containsKey(jj.getHometown())) {
                map.put(jj.getHometown(), 1);
            } else {
                int m = map.get(jj.getHometown());
                map.put(jj.getHometown(), m+1);
            }
        }
        System.out.println("各地区武将数目:");
        Set<Map.Entry<String, Integer>> ss = map.entrySet();
        for (Map.Entry<String, Integer> s : ss) {
            System.out.print(s.getKey() + " " + s.getValue()+"\t");
        }
        System.out.println();


        // 7.统计平均年龄最高的地区
        TreeMap<String, Integer> treeMap = new TreeMap<>();
        for (WuJiang wuJiang : wjlist) {
            String hometown = wuJiang.getHometown();
            int age =wuJiang.getEnd()-wuJiang.getStart();
            if (!treeMap.containsKey(hometown)){
                treeMap.put(hometown,age);
            }else {
                Integer age2 = treeMap.get(hometown);
                treeMap.put(hometown,age+age2);
            }
        }
        TreeMap< Integer,String> treeMap1 = new TreeMap<>(new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                return o2-o1;
            }
        });
        Set<Map.Entry<String, Integer>> set1 = treeMap.entrySet();
        for (Map.Entry<String, Integer> entry : set1) {
            int n=entry.getValue()/map.get(entry.getKey());
            treeMap1.put(n,entry.getKey());
            System.out.println("武将平均年龄最大的地区是: "+entry.getKey()+" 平均年龄: "+n+"岁");
            break;
        }

        //6.统计平均年龄
        int age3=0;
        for (WuJiang wuJiang : wjlist) {
            age3+=(wuJiang.getEnd()-wuJiang.getStart());
        }
        System.out.println("武将平均年龄: "+age3/wjlist.size());

        // 4.统计各个年龄段的武将 比如:10~19岁,20~29岁,30~39岁 40~49岁 50~59岁 60岁以上
        // 5.统计各个年龄段的武将男女比
        TreeMap<String, Integer> treeMap2 = new TreeMap<>();
        TreeMap<String, Integer> treeMap3 = new TreeMap<>();
        TreeMap<String, Integer> treeMap4 = new TreeMap<>();
        TreeMap<String, Integer> treeMap5 = new TreeMap<>();
        TreeMap<String, Integer> treeMap6 = new TreeMap<>();
        TreeMap<String, Integer> treeMap7 = new TreeMap<>();
        int a=0, a1=0,b=0,b1=0,c=0,c1=0,d=0,d1=0,e=0,e1=0,f=0,f1=0;
        for (WuJiang wuJiang : wjlist) {
            if (wuJiang.getEnd()-wuJiang.getStart()>=10&&wuJiang.getEnd()-wuJiang.getStart()<20){
            treeMap2.put(wuJiang.getName(),wuJiang.getEnd()-wuJiang.getStart());
            if (wuJiang.getSex().equals("男")){
                a++;
            }else {
                a1++;
            }
            }
            else if (wuJiang.getEnd()-wuJiang.getStart()>=20&&wuJiang.getEnd()-wuJiang.getStart()<30) {
                treeMap3.put(wuJiang.getName(),wuJiang.getEnd()-wuJiang.getStart());
                if (wuJiang.getSex().equals("男")){
                    b++;
                }else {
                    b1++;
                }
            }else if (wuJiang.getEnd()-wuJiang.getStart()>=30&&wuJiang.getEnd()-wuJiang.getStart()<40) {
                treeMap4.put(wuJiang.getName(),wuJiang.getEnd()-wuJiang.getStart());
                if (wuJiang.getSex().equals("男")){
                    c++;
                }else {
                    c1++;
                }
            }else if (wuJiang.getEnd()-wuJiang.getStart()>=40&&wuJiang.getEnd()-wuJiang.getStart()<50) {
                treeMap5.put(wuJiang.getName(),wuJiang.getEnd()-wuJiang.getStart());
                if (wuJiang.getSex().equals("男")){
                    d++;
                }else {
                    d1++;
                }
            }else if (wuJiang.getEnd()-wuJiang.getStart()>=50&&wuJiang.getEnd()-wuJiang.getStart()<60) {
                treeMap6.put(wuJiang.getName(),wuJiang.getEnd()-wuJiang.getStart());
                if (wuJiang.getSex().equals("男")){
                    e++;
                }else {
                    e1++;
                }
            }else if (wuJiang.getEnd()-wuJiang.getStart()>=60) {
                treeMap7.put(wuJiang.getName(),wuJiang.getEnd()-wuJiang.getStart());
                if (wuJiang.getSex().equals("男")){
                    f++;
                }else {
                    f1++;
                }
            }
        }
        System.out.println("武将年龄在10-19岁的有:"+treeMap2.size()+"人;"+"男女比例为"+a+"/"+a1);
        System.out.println("武将年龄在20-29岁的有:"+treeMap3.size()+"人;"+"男女比例为"+b+"/"+b1);
        System.out.println("武将年龄在30-39岁的有:"+treeMap4.size()+"人;"+"男女比例为"+c+"/"+c1);
        System.out.println("武将年龄在40-49岁的有:"+treeMap5.size()+"人;"+"男女比例为"+d+"/"+d1);
        System.out.println("武将年龄在50-59岁的有:"+treeMap6.size()+"人;"+"男女比例为"+e+"/"+e1);
        System.out.println("武将年龄在60岁以上的有:"+treeMap7.size()+"人;"+"男女比例为"+f+"/"+f1);



    }
}

class WuJiang {
    //private int xuhao;
    private String name;
    private String hometown;
    private String sex;
    private int start;
    private int end;
    private int forceValue;

    public WuJiang() {
    }

    public WuJiang(String name, String hometown, int start, int end, int forceValue) {
        this.name = name;
        this.hometown = hometown;
        this.start = start;
        this.end = end;
        this.forceValue = forceValue;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getHometown() {
        return hometown;
    }

    public void setHometown(String hometown) {
        this.hometown = hometown;
    }

    public int getStart() {
        return start;
    }

    public void setStart(int start) {
        this.start = start;
    }

    public int getEnd() {
        return end;
    }

    public void setEnd(int end) {
        this.end = end;
    }

    public int getForceValue() {
        return forceValue;
    }

    public void setForceValue(int forceValue) {
        this.forceValue = forceValue;
    }
}

结果:

武将战力前三: 
100 吕布
98 张飞
97 关羽
各地区武将数目:
上庸 2	下邳 16	云南 17	会稽 8	北平 15	北海 5	南皮 1310	天水 1714	寿春 5	小沛 6	平原 5	庐江 13	建业 21	成都 21	新野 45	晋阳 15	柴桑 11	桂阳 6	梓潼 10	武陵 7	汉中 7	汝南 8	江夏 10	江州 12	江陵 17	洛阳 30	濮阳 204	襄平 7	襄阳 16	西凉 4	许昌 1922	长安 13	长沙 6	陈留 26	零陵 7	
武将平均年龄最大的地区是: 上庸 平均年龄: 64岁
武将平均年龄: 50
武将年龄在10-19岁的有:2人;男女比例为2/0
武将年龄在20-29岁的有:11人;男女比例为9/2
武将年龄在30-39岁的有:104人;男女比例为95/9
武将年龄在40-49岁的有:136人;男女比例为129/7
武将年龄在50-59岁的有:97人;男女比例为89/8
武将年龄在60岁以上的有:124人;男女比例为119/5

Process finished with exit code 0

你可能感兴趣的:(根据某三国游戏提供的武将资料,完成需求:)