这是一个从文件中读取数据到hashtable,并打印出来的程序,但打印出来的时候为什么只有最后一条数据,还有在“最后更新日期“前为什么多了一个0,”找了很久找不出错误,请大家帮忙找找,谢谢了。
以下是文件内容,保存成“stock.txt”就可以了FUJITSU  最后更新日期: 2003.05.13; 涨幅: 2.11%; 成交量: 60,400
ORACLE  最后更新日期: 2003.05.13; 涨幅: -0.13%; 成交量: 10,500
IBM  最后更新日期: 2003.05.13; 涨幅: 5.23%; 成交量: 90,600
HP  最后更新日期: 2003.05.13; 涨幅: -6.15%; 成交量: 35,122
import java.util.*;
import java.io.*;class Test
{     String line="";
     String id="";
     StringBuffer value=new StringBuffer();
     Hashtable ht=null;
    
    public void dd()
     {
     
     try{
    
     BufferedReader file=new BufferedReader(new FileReader("stock.txt"));
         while((line=file.readLine())!=null)
         {
         
          StringTokenizer st=new StringTokenizer(line);
          id=st.nextToken().toUpperCase();
          while(st.hasMoreTokens())
          {
          value.append(st.nextToken());
          if(st.hasMoreTokens())
          {
          value.append(" ");
          }
          }
         
          ht=new Hashtable();
          ht.put(id,value.toString());
         
          System.out.println (id+"  "+(String)(ht.get(id)));
          value.replace(0,value.length()-1,"");
          id="";
    
         
         }
         Enumeration en=ht.elements();
         while(en.hasMoreElements())
         {
          System.out.println ((String)(en.nextElement()));
         }
         
    }
    catch (Exception ex) {
    }
    }
    public static void main(String[] args)
     {
     Test test=new Test();
     test.dd();
    }
}

解决方案 »

  1.   

    value.replace(0,value.length(),"");//改成这样去"0"
      

  2.   

    import java.util.*;
    import java.io.*;class Test
    {String line="";
    String id="";
    StringBuffer value=new StringBuffer();
    Hashtable<String, StringBuffer> ht=null;public void dd() 
    {try{BufferedReader file=new BufferedReader(new FileReader("stock.txt"));
    StringTokenizer st = null;
    while((line=file.readLine()) != null)
    {st=new StringTokenizer(line);
    id=st.nextToken().toUpperCase();while(st.hasMoreTokens())
    {
    value.append(st.nextToken());
    if(st.hasMoreTokens())
    {
    value.append(" ");
    }
    }ht=new Hashtable<String, StringBuffer>();
    ht.put(id,value);System.out.println (id + " " + ht.get(id));
    value.replace(0,value.length(),"");
    id="";
    }
    Enumeration en=ht.elements();
    while(en.hasMoreElements())
    {
    System.out.println ((String)(en.nextElement()));
    }}
    catch (Exception ex) {
    }
    }
    public static void main(String[] args)
    {
    Test test=new Test();
    test.dd();
    }
    }
      

  3.   

    Hashtable<String, StringBuffer> ht=null;
    这条语句是什么意思,为什么有<>
      

  4.   

    还有个问题还没解决啊,就是在Enumeration 中不能打印出全部的数据