java 计费_一次作业题目-----话单计费(Java)

import java.io.*;

import java.util.*;

class User{

private String username;

private String acctstatustype;

private String acctsessiontime;

void setUname(String s){username=s;}

void setAtype(String s){acctstatustype=s;}

void setAtime(String s){acctsessiontime=s;}

}

public class Assign{

public static void main(String[] args){

int count=0;

String s="D://asc//detail.txt";

String s2="";

String[] s3;

String date,name,value,type,stime,ino,outo;     //存储detail.txt中的每条记录

String subname;      //subname存储用户列表中的名字,

//int totaltime;       //totaltime存储每个用户的总时长

ArrayList list=new ArrayList();

TreeMap map=new TreeMap();

TreeMap map2=new TreeMap();

TreeSet set=new TreeSet();   //存储用户名

File detail=new File(s);

try{

PrintWriter pw=new PrintWriter(new FileWriter("a.txt"));                //so here

BufferedReader br=new BufferedReader(new FileReader(detail));

while((s2=br.readLine())!=null)

{

if(s2.equals("")==false)       //当没(一整行)遇到""时,即是一个"单元"时

{

StringTokenizer st=new StringTokenizer(s2,"=");

if(st.countTokens()<2)      //不是名/值对形式时跳过,忘了第一行日期不是名/值对,同样要加入单元里

map.put("date",s2);//continue;

else

{

name=st.nextToken().trim();

value=st.nextToken().trim();

map.put(name,value);        //把每一行添加到其所属的单元内

if(name.equals("User-Name"))

{

set.add(value);             //把每个不同用户的名字加入set,为了后面的统计每个用户准备

//int[] totalcount=new int[set.size()];

}

}

//System.out.println("name is "+name+" value is "+value);  //Successful

}

else

{                       //遇到了(一个整行是)"",说明一个单元结束,把此单元加入list

//if(map.firstKey()!=null)    //防止出现连续两个""时,出现NullPointer错误,如果不判断,在detail.txt结尾就有两个"",那么最后的一个元素是空的TreeMap,从Map中get时出现NullPointer错误)

//注意:用map.firstKey()不能判断map里是否有元素(因为如果map里没有元素,直接抛出异常),而是用Map的size()判断

if(map.size()>0)

{

list.add(map);            //往list里面添加单元

map=new TreeMap();        //新建map

}

//else

//  break;

}

}

}catch(FileNotFoundException e){e.printStackTrace();}

catch(IOException e){e.printStackTrace();}

Iterator it=list.iterator();     while(it.hasNext())     {       //***一个单元       map=(TreeMap)it.next();       date=(String)map.get("date");       name=(String)map.get("User-Name");       type=(String)map.get("Acct-Status-Type");       stime=(String)map.get("Acct-Session-Time");       ino=(String)map.get("Acct-Input-Octets");       outo=(String)map.get("Acct-Output-Octets");       //***一个单元                     if(type!=null)                //上面的判断不好用,所以下面这里还要判断一下,待解决!!!!!       {         if(type.equals("Stop"))     //accttype为Stop的单元         {               //防止出现连续两个""时,出现NullPointer错误,如果不判断,在detail.txt结尾就有两个"",那么最后的一个元素是空的TreeMap,从Map中get时出现NullPointer错误),不是这个原因           //System.out.println(type);   //问题更新,明明能打印出所有的type值,但是一用type.equals()就出错最后两个值出不来,只能加上面的判断           //System.out.println(" "+value.equals("Stop"));           //System.out.println("时间 "+date+"用户 "+name+" 类型 "+type+" 时长 "+stime+" 流入 "+ino+" 流出 "+outo);                      System.out.println(name+" "+outo);                                 /*Iterator it2=set.iterator();           while(it2.hasNext())           {             subname=(String)it2.next();                      if(name.equals(subname))//name和其中的一个匹配                                                      //System.out.println((String)it2.next());           }*/           //String[set.size()] s;           //=set.toArray(s);                        /*for(int i=0;i

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值