问题出在System.out.println((Student)arrlist.get(i));打印的是Student对象,如果你没有覆写其父类的toString()方法,它将按其父类的toString()方法打印这个对象,于是就成了你现在的结果。你应该覆写Student的toString()方法,使其以正确的方式打印你想要其打印的数据

解决方案 »

  1.   

    while (str != null) { 
      arrlist.add(new Student());                    //存入arrlist 
      str = bf.readLine(); 

    你这段代码什么意思?你这样是每次从文件里读一行,就将一个新建的Student()对象加到arrlist里,你加的根本就不是读入的数据!不知道你在干什么,你想干什么了!
      

  2.   

    这段代码难道不是往arrlist里添加新的Student对象吗?我们老师说这样可以!我给你我们老师的代码
    import java.util.*;class Circle{
      double r;
      public Circle(double r){
        this.r=r;
      }
      public double getR(){
        return r;
      }
    }public class CArrayList {
      public CArrayList() {
      }  public static void main(String[] args){
        ArrayList arrlist=new ArrayList();
        for(int i=0;i<5;i++){
          arrlist.add(new Circle(i));
        }
        // get r=3 circle
        int size=arrlist.size();
        int i=0;
        for(i=0;i<size;i++){
          Object obj=arrlist.get(i);
          double r=((Circle)obj).getR();
          if(r==10){
            System.out.println("find i="+i);
            break;
          }
        }
        if(i==size){
          System.out.println("not find");
        }  }
    }
      

  3.   

    我也觉得好像有点不对,但具体事里出啦问题我就是找不出来,是我读取的内容没有存入arrlist里吗?
      

  4.   

    我觉得问题是出在你的类根本就是设计不合理,Student 应该是一个学生,包含有姓名、成绩等属性,文件、学生列表都不应该是 Student 的属性(应该是一个班级或科目)。如果你一定要在一个类里面完成,那么就把读取数据、封装都放在 main 函数里(包文件、学生列表都作为函数内部变量),同时要重载 Student 的 toString 函数。
      

  5.   

    楼上说得有道理,Student应该作为一个承载数据的载体对象,而应该另外编写一个类用于从文件中读取数据,并根据这些创建Student对象,再将这些Student对象写入ArrayList中
      

  6.   

    装入容器里的对象统统被向上转型至object型别,当你再次将其从容器中取出时,你得到的是object型别。你试图将其转化为字符串,这就调用了object类的toString方法,它的作用显示对象内存地址信息,结果你也看到了。如果你一开始是将String装入容器,那么当你再次取出时可以将它向下转型回原来的型别:(String)object,这样你就可以打印当初装载进去的字符串了。
      

  7.   

    arrlist.add(new Student());
    这句话是重点你往arrlist放了个Student对象
    要想取其内容先取出Student对象
    然后从取出的Student对象中再取内容
      

  8.   

    重载Object的toString方法。
    public String toString(){}
    默认的toString方法输出为类名@对象哈希码