public class student{public List A(DB db){
 db.open();
 String sql = "select * from student where course='english'";
 ArrayList data = new ArrayList();
 List ls = new ArrayList();
 data = db.execute(sql,data); //db.execute在DB类中已经存在,返回的是data列表
 for(int i=0; i<data.size(); i++){//data.size()值为三行。
  String temp = data.get(i).tostring(); //temp里的值[001, bronica,english,good]
  string[] tem = temp.split(",");
  student st = new student();
  st.setNum(tem[0]);
  st.setName(tem[1]);
  st.setCourse(tem[2]);
  st.setLevel(tem[3]);
  ls.add(st);  
 }
 return ls;   //为什么我返回的是Student@13a317a, Student@763f5d.  我想要的结果就是两三行数据放在ls里面}我想了半天也不知道为什么return的结果不是001, bronica,english,good;002,Jim,english,bad,...

解决方案 »

  1.   

    你要一个一个的拿出来才行.
    如果你想打印出来看看,可以这样,你给Student加一个public String toString()方法.System.out.println(ls);就可以了.
      

  2.   

    你返回的list的结合啊 要遍历才能取到你需要的结果啊
      

  3.   

    public String toString(){
       return 学号+" "+姓名+" "+学课+" "+成绩;
    }大概就是这样的,把上面的汉字换成你在Student中的实际的名字
      

  4.   


    我就用System.out.println(ls)得出的结果是Student@13a317a, Student@763f5d
    所以才求助
      

  5.   

    代码没有错, 肯定是测试打印的时候出错了.
    for(int i=0; i<ls.size(); i++){
       Student stu = (Student) ls.get(i);
       System.out.println(stu.getName());
       System.out.println(stu.getNum());
       System.out.println(stu.getScore());
    }
      

  6.   

        for(int i = 0; i<ls.size(); i++){
          String temList = ls.get(i).toString();
          System.out.println(temList);
        }
    我是用这种方法遍历的,得出的结果是Student@13a317a, Student@763f5d
      

  7.   


    Student没有重写toString()方法,就会去调用Object的toString()方法,这个方法只打印出对象的类+Hash地址.所以会出现Student@13a317a,Student是类名,13a317a是对象的地址.
      

  8.   

    所以你应该给Student类加一个toString()方法.
      

  9.   


    正解怎么没人支持?其实不一个个拿出来打印也是可以的。System.out.println()调用的就是对象的toString方法,System.out.println(list)
    因为ArrayList已经重写了toString方法。
      

  10.   

    楼主试试我写的:public class student{public List A(DB db){
    String[] tem =new String[50];
     db.open();
     String sql = "select * from student where course='english'";
     ArrayList data = new ArrayList();
     List ls = new ArrayList();
     Iterator it = ls.iterator();
     while(it.hasNext()){
     Object[] obj=(Object[])it.next();
     for(int i;i<ls.size();i++){
     tem[i]=obj[i].toString();
     }

     }
      student st = new student();
      st.setNum(tem[0]);
      st.setName(tem[1]);
      st.setCourse(tem[2]);
      st.setLevel(tem[3]);
      ls.add(st);  
     }
     return ls; 
    }
      

  11.   

    public String toString(){
    return ??
    }
    请教一下,我应该return是什么值呢?
      

  12.   


    如果只有两三个字段可以return id + name + course + level 
    如果有几十个字段是不是也要一个个return ......啊
      

  13.   

    lz喜洋洋呀,我是灰太狼呀哈哈,你的头像我以前用过呢。。你返回的Student@13a317a, Student@763f5d.是对的,因为你返回的是list,一个对象集合,当然就是一个地址了,如果你想要list的数值,就要对他进行遍历的,遍历一个List喜洋洋应该会吧。。o(∩_∩)o...
      

  14.   

    你list里面的元素还是一个对象,当然出现的还是地址了啊,你应该在继续写下去,比如:
    String temList = ls.get(i).getName().toString(),写不写toString()都可以的,主要是你没有继续找下去
      

  15.   

    你的list里有3个对象,而你的每个对象又是个对象,基本数据类型和String型的东西以及有些sun公司给定的东西。都会给定toString方法,一般打印后面都不跟toString方法,但是自己的类必须重写toString方法,才可以,你在temp类中写个toString方法,把你要输出的东西return出来就行了~~如果自己不定义toString方法的话,系统默认的toString方法是输出内存地址的。
      

  16.   

    重写tostring,否则调用的是object的toString方法