题目:刷卡记录:名字-金钱 读取并找出刷卡次数最多,单笔消费最多
代码:
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 exception
e.printStackTrace();
}
//关闭文件
finally{
try {
br.close();
fr.close();
} catch (Exception e2) {
// TODO: handle exception
e2.printStackTrace();
}
}
}
}
//信息记录类
class Node{
String name;
float cost;
public Node(String name ,float cost)
{
this.cost=cost;
this.name= name;
}
}