Java 笔试题的算法题之io编程(一)

来源:互联网 发布:疯帽子雾化器做丝数据 编辑:程序博客网 时间:2024/06/16 15:06

题目:刷卡记录:名字-金钱    读取并找出刷卡次数最多,单笔消费最多


代码:

import java.io.BufferedReader;import java.io.FileReader;import java.util.ArrayList;import java.util.HashMap;import java.util.HashSet;import java.util.Iterator;import java.util.Map.Entry;//刷卡记录:名字-金钱    读取并找出刷卡次数最多,单笔消费最多public class IoTest {    public static void main(String[] args) {FileReader fr =null;BufferedReader br= null;ArrayList<Node> al = new ArrayList<Node>();HashSet<String> set = new HashSet<String>();HashMap<String, Integer> map = new HashMap<String, Integer>();       try {     fr = new FileReader("d://test.txt");         br = new BufferedReader(fr);         String n = "";         //readLine 如果到流末尾则会返回null         while ((n=br.readLine())!=null)         {         //封装成类         String node[] =n.split("-");         Node node1 = new Node(node[0], Float.parseFloat(node[1]));         set.add(node[0]);         al.add(node1);        // System.out.println(node1.name);         }                  //找出单笔最大花费的人         String maxName = "";         for (int i =1;i<al.size();i++)         {         Node node = al.get(i);                  if(node.cost>al.get(i-1).cost)         {         maxName = node.name;         }         }         System.out.println("单笔花费最多的人是:"+maxName);               /* for(int i=0;i<al.size();i++)       {       System.out.println(al.get(i).name+"  "+al.get(i).cost);       }*/                              //遍历set得到各个人的刷卡次数,保存到map中          Iterator<String> iter = set.iterator();                     while (iter.hasNext()) {            String name = (String) iter.next();                        int count =0;            for(int i =0;i<al.size();i++)            {                       if(al.get(i).name.equals(name))            {            count++;            }                        }            map.put(name, count);                                     }                //遍历map得到每个人的刷卡次数        Iterator iter2 = map.keySet().iterator();          while(iter2.hasNext())          {          String name2 =(String) iter2.next();          int count = map.get(name2);          System.out.println(name2+"  次数: "+count);          }} catch (Exception e) {// TODO: handle exceptione.printStackTrace();}       //关闭文件       finally{       try {   br.close();       fr.close();} catch (Exception e2) {// TODO: handle exceptione2.printStackTrace();}           }} }//信息记录类class Node{String name;float cost;public Node(String name ,float cost){this.cost=cost;this.name= name;}}


阅读全文
0 0
原创粉丝点击