菜鸟急问一个程序的问题
问题在109行和188行,就是readFile方法上,其他方法不用看,知道有点长,谢谢了,各位哥们!
package test.util;java 对象
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.math.BigDecimal;
import java.util.ArrayList;
/*
#客户号 姓名 所述机构号 性别 帐号 发生时间 发生额
000001,刘恭亮,0000,1,4155990188888888,20060720200005,300.00
000201,白晓龙,0002,1,4155990199999999,20060720200005,500.00
000101,黄戈华,0012,1,4155990100000000,20060720200005,1000.50
000101,张 东,0012,1,4155990155555555,20060720200005,600.99
000301,关婧媛,0013,0,4155990111111111,20060722201005,5000.00
000001,刘恭亮,0000,1,4155990188888888,20060725200005,200.00
*/
class TransRecord {
private String customerNumber;
private String customerName;
private String jiGou;
private int sex;
private String accountNumber;
private String happenTime;
private BigDecimal amount;
public TransRecord(String[] message,int n){
if(7 == n){
this.customerNumber = message[0];
this.customerName = message[1];
this.jiGou = message[2];
this.sex = Integer.parseInt(message[3]);
this.accountNumber = message[4];
this.happenTime = message[5];
this.amount = new BigDecimal(message[6]);
}
else{
System.out.println("对象创建失败!");
System.exit(1);//发生异常,终止程序
}
}
public String getCustomerNumber(){
return customerNumber;
}
public String getCustomerName(){
return customerName;
}
public String getJiGou(){
return jiGou;
}
public int getSex(){
return sex;
}
public String getAccountNumber(){
return accountNumber;
}
public String getHappenTime(){
return happenTime;
}
public BigDecimal getAmount(){
return amount;
}
}
public class TransRecordManager{
//读取文件,生成并返回TransRecord队列
public ArrayList<TransRecord> readFile(String fileName){// 读取文本内容,并生成对象存放在List队列中
BufferedReader br = null;
int n = 0;
String str = new String();
ArrayList<TransRecord> list = new ArrayList<TransRecord>();
try{
br = new BufferedReader(new FileReader(new File(fileName)));
}
catch(FileNotFoundException e){
e.printStackTrace();
}
try{
while((str=br.readLine())!= null){
n++;
if(1 == n)
continue;
String[] tempStr = str.split(",");
for(int i =0;i<tempStr.length;i++){
list.add(new TransRecord(tempStr,tempStr.length));
}
System.out.println();
//System.out.println(list);
}
br.close();
}
catch(IOException e){
e.printStackTrace();
}
System.out.println(list);//这里打印的为什么不是TransRecord对象,而是
//test.util.TransRecord@4f459c这种类型的结果,不知道错在那里
return list;
}
/**
* 记录数组
*/
private TransRecord[] records(){
String filePath = "c:\\\\data.txt";
int i = 0;
ArrayList<TransRecord> relist = this.readFile(filePath);
TransRecord[] recordMsg = new TransRecord[relist.size()];
for(TransRecord si:relist){
recordMsg[i++] = si;
//System.out.print(si.);
}
return recordMsg;
}
public TransRecord findByCustomerNumber(String customerNumber){
String filePath = "c:\\data.txt";
ArrayList<TransRecord> relist = this.readFile(filePath);
for(TransRecord si:relist){
if(si.getCustomerNumber().equals(customerNumber)){
//System.out.println(si);
return si;
}
}
return null;
}
/**
* 按日期段查询记录
* @param start - 开始日期
* @param end - 结束日期
* @return 符合条件的记录数组或null
*/
public TransRecord[] findByDate(String start, String end){
TransRecord[] temp = records();
TransRecord[] result = new TransRecord[10];
int j = 0;
for(int i =0;i<temp.length;i += 7){
if((Integer.parseInt(temp[i].getHappenTime())>Integer.parseInt(start))
&&(Integer.parseInt(temp[i].getHappenTime())<Integer.parseInt(end))){
result[j++] = temp[i];
}
}
return result;
}
/**
* 取得总金额
* @return 总金额
*/
public BigDecimal totalAmount(){
TransRecord[] temp = records();
BigDecimal total = new BigDecimal("0");
for(int i=0;i<temp.length;i += 7){
total = total.add(temp[i].getAmount());
}
return total;
}
/**
* 按金额排序
* @return 按金额升序排序的结果
*/
public TransRecord[] sortByAmount(){
return null;
}
public static void main(String[] args){
TransRecordManager aa = new TransRecordManager();
TransRecord bb =aa.findByCustomerNumber("000201");
System.out.println("账户总金额="+aa.totalAmount());
System.out.println(bb);//这一句的运行结果是test.util.TransRecord@e0cc23,
//这是什么类型的错误,怎么解决
}
}