首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Eclipse开发 >

初学者急问一个程序的有关问题

2013-01-28 
菜鸟急问一个程序的问题问题在109行和188行,就是readFile方法上,其他方法不用看,知道有点长,谢谢了,各位哥

菜鸟急问一个程序的问题
问题在109行和188行,就是readFile方法上,其他方法不用看,知道有点长,谢谢了,各位哥们!

package test.util;

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,
                               //这是什么类型的错误,怎么解决
    }
    }



java 对象
[解决办法]
//test.util.TransRecord@4f459c这种类型的结果,不知道错在那里
默认的toString方法就是打印这种结果,如果你想打印出可读的结果,需要去override TransRecord的toString()方法
[解决办法]
TransRecord bb;bb是个对象,.下,调用它的方法就可以了。

热点排行