一次作业题目-----话单计费(Java)
2006-01-16 19:43
387 查看
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<set.size();i++)
{
subname=(String)it2.next();
if(name.equals(subname))
totalcount[i]+=stime;
}*/
}
}
//else
//System.out.println("Hoho");
}
/*测试一下,判断set是否包含了detail.txt中出现的所有用户名,SUC
it=set.iterator();
while(it.hasNext())
{
System.out.println((String)it.next());
}
*/
//System.out.println(count);
}
}
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<set.size();i++)
{
subname=(String)it2.next();
if(name.equals(subname))
totalcount[i]+=stime;
}*/
}
}
//else
//System.out.println("Hoho");
}
/*测试一下,判断set是否包含了detail.txt中出现的所有用户名,SUC
it=set.iterator();
while(it.hasNext())
{
System.out.println((String)it.next());
}
*/
//System.out.println(count);
}
}
相关文章推荐
- 一次作业题目-----话单计费(C-多维数组)
- 一次作业题目-----话单计费(C-链表)
- 由一次java作业 引起的思考
- 个人作业1——四则运算题目生成程序(java代码,基于控制台)
- 【求助】一个菜鸟java作业,帮忙看一下错在哪儿,题目是判断回文数
- 【求助】一个菜鸟java作业,帮忙看一下错在哪儿,题目是判断回文数
- JAVA__大作业_4_3X题目用户图形界面实现
- 个人作业1——四则运算题目生成程序(基于java)
- leetcode_137. Single Number II 只出现一次的数字 II 偏离了题目考点,主要是为了写下java
- 第一次作业-----四则运算题目生成(基于java)
- JAVA--第十周作业编写之一个Teacher类负责给出算术题目,随机给出两个整数并进行运算,并判断回答者的答案是否正确;编写一个GUI类ComputerFrame,回答者可以通过GUI看到题目并给出
- Java第7次作业:造人类(用private封装,用static关键字自己造重载输出方法)什么是面向对象程序设计?什么是类和对象?什么是无参有参构造方法 ?什么是封装?
- Java第11次作业:什么是继承?继承的好处?什么是覆写?super()?构造代码块?子父类初始化顺序? 抽象类能用final声明吗?final关键字声明类 方法 变量以及全局常量?抽象类的构造方法?
- java第九次作业:第九章例题3个
- 阿里巴巴Java程序员面试的11个题目,网友:居然一个都不会!
- java-java57-第六次作业
- java在线聊天项目0.5版 解决客户端向服务器端发送信息时只能发送一次问题 OutputStreamWriter DataOutputStream socket.getOutputStream()
- IT十八掌作业_java基础第三天_数组
- 2013 蓝桥杯校内选拔赛 java本科B组(题目+答案)
- Java面试题目