牛骨文教育服务平台(让学习变的简单)
博文笔记

JAVA编程综合练习(一)

创建时间:2014-11-15 投稿人: 浏览次数:758

练习目的:类、IO、集合、数据类型转换

题目需求:

假设你硬盘上存储这么一个文件:

"D:/java_code/IO/src/file01.txt"

此文件的信息是:

(图1-1) 现在让你用java写一个程序,完成以下要求: 1.读取文件信息 2.计算设备号的总金额和类型号的总金额
下面就直接给出程序学习吧! 程序1:
//学习目的:认识类对数据的处理方式
public class Record {
	//数据块:  id|设备号|类型|号码|金额
    private String id;
    private String devNo;
    private String busiType;
    private String userCode;
    private int userAmount;

    public String getId() {
        return id;
    }
    
    public void setId(String id) {
        this.id = id;
    }

    public String getDevNo() {
        return devNo;
    }

    public void setDevNo(String devNo) {
        this.devNo = devNo;
    }

    public String getBusiType() {
        return busiType;
    }

    public void setBusiType(String busiType) {
        this.busiType = busiType;
    }

    public String getUserCode() {
        return userCode;
    }

    public void setUserCode(String userCode) {
        this.userCode = userCode;
    }

    public int getUserAmount() {
        return userAmount;
    }

    public void setUserAmount(int userAmount) {
        this.userAmount = userAmount;
    }
}

主程序2:
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;

public class TableCalculate {

	public static void main(String[] args) {

		List StringList=new ArrayList<>();  //存储字符串
		List RecordList=new ArrayList(); //存储对象
		Map IdMap=new HashMap(); //计算设备号的总金额
		Map DevNoMap=new HashMap();//计算类型号的总金额
		StringList=new TableCalculate().ReaderFile("D:/java_code/IO/src/file01.txt"); //现在list里的字符串代表了每条记录
		RecordList=new TableCalculate().StringToRecord(StringList);  //把String 记录转Record

		IdMap=new TableCalculate().CalculateIdUserAmount(RecordList,1);  //计算
		DevNoMap=new TableCalculate().CalculateIdUserAmount(RecordList,2);  //计算
		show(IdMap,1);  //第二个参数是选择Map遍历的类型
		show(DevNoMap,2); //第二个参数是选择Map遍历的类型
	}

	//写此的学习目的:学习 HashMap 的遍历
	public static void show(Map map,int m)  
	{
		if(m==1){
			Iterator itm=map.keySet().iterator();	
			while(itm.hasNext())
			{
				String No = itm.next();
				System.out.println(No+":"+map.get(No));
			}
		}
		if(m==2){
			Iterator> mapEntry=map.entrySet().iterator();
			while(mapEntry.hasNext())
			{
				Map.Entry entry=mapEntry.next();
				System.out.println(entry.getKey()+":"+entry.getValue());
			}
		}
	} 
	 //写此方法的学习目的:认识 Map 运用
	public Map CalculateIdUserAmount(List RecordList,int k) 
	{
		Map IdMap=new HashMap(); //运算表1
		Map DevNoMap=new HashMap();//运算表2
		if(k==1){
			for (Record record : RecordList)
			{
				if(IdMap.containsKey(record.getDevNo()))
				{
					IdMap.put(record.getDevNo(),IdMap.get(record.getDevNo())+record.getUserAmount());
				}
				else
				{
					IdMap.put(record.getDevNo(),record.getUserAmount());
				}
			}
			return IdMap;
		}

		if(k==2){
			for (Record record : RecordList)
			{
				if(DevNoMap.containsKey(record.getBusiType()))
				{
					DevNoMap.put(record.getBusiType(),DevNoMap.get(record.getBusiType())+record.getUserAmount());
				}
				else
				{
					DevNoMap.put(record.getBusiType(),record.getUserAmount());
				}
			}
			return DevNoMap;
		}
		else return null;
	}

	 //写此方法的学习目的:ArrayList的存储和遍历
	public List StringToRecord(List StringList) 
	{
		List RecordList=new ArrayList(); //存储对象

		//将StringList转换成对象Record存储  第一种方式
		//		for(String line:StringList)
		//		{
		//			String[] StringArray=line.split("\|");
		//			Record record=new Record();
		//			record.setId(StringArray[0]);
		//			record.setDevNo(StringArray[1]);
		//			record.setBusiType(StringArray[2]);
		//			record.setUserCode(StringArray[3]);
		//			record.setUserAmount(Integer.parseInt(StringArray[4]));
		//			RecordList.add(record);//存储对象的列表
		//		}
		//将StringList转换成对象Record存储  第二种方式
		//		Iterator it=StringList.listIterator();
		//		while(it.hasNext())  //将StringList转换成对象Record存储
		//		{
		//			Record record=new Record();
		//			String[] strArray=it.next().split("\|");
		//			record.setId(strArray[0]);
		//			record.setDevNo(strArray[1]);
		//			record.setBusiType(strArray[2]);
		//			record.setUserCode(strArray[3]);
		//			record.setUserAmount(Integer.parseInt(strArray[4]));  //重要知识
		//			RecordList.add(record);//存储对象的列表
		//		}

		//将StringList转换成对象Record存储  第三种方式
		for(int i=0;i ReaderFile(String file)  
	{
		BufferedReader br=null;
		try {
			InputStream in=new FileInputStream(file);  //文件读取的字节流
			InputStreamReader ir=new InputStreamReader(in); //把字节流转换成字符流
			br=new BufferedReader(ir);  //字符缓冲流

			List list=new ArrayList();
			String str=null;
			while((str=br.readLine())!=null)
			{
				if(str.startsWith("//")){continue ;}
				list.add(str);
			}
			return list;
		} catch (FileNotFoundException e) {
			return null;

		} catch (IOException e) {
			return null;
		}finally
		{
			try {
				if(br!=null){
					br.close();}
			} catch (IOException e) {

				e.printStackTrace();
			}
		}
	}
}

(慢慢更新中)


声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。