请教一个关于ArrayList的问题! 问题出在System.out.println((Student)arrlist.get(i));打印的是Student对象,如果你没有覆写其父类的toString()方法,它将按其父类的toString()方法打印这个对象,于是就成了你现在的结果。你应该覆写Student的toString()方法,使其以正确的方式打印你想要其打印的数据 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 while (str != null) { arrlist.add(new Student()); //存入arrlist str = bf.readLine(); } 你这段代码什么意思?你这样是每次从文件里读一行,就将一个新建的Student()对象加到arrlist里,你加的根本就不是读入的数据!不知道你在干什么,你想干什么了! 这段代码难道不是往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"); } }} 我也觉得好像有点不对,但具体事里出啦问题我就是找不出来,是我读取的内容没有存入arrlist里吗? 我觉得问题是出在你的类根本就是设计不合理,Student 应该是一个学生,包含有姓名、成绩等属性,文件、学生列表都不应该是 Student 的属性(应该是一个班级或科目)。如果你一定要在一个类里面完成,那么就把读取数据、封装都放在 main 函数里(包文件、学生列表都作为函数内部变量),同时要重载 Student 的 toString 函数。 楼上说得有道理,Student应该作为一个承载数据的载体对象,而应该另外编写一个类用于从文件中读取数据,并根据这些创建Student对象,再将这些Student对象写入ArrayList中 装入容器里的对象统统被向上转型至object型别,当你再次将其从容器中取出时,你得到的是object型别。你试图将其转化为字符串,这就调用了object类的toString方法,它的作用显示对象内存地址信息,结果你也看到了。如果你一开始是将String装入容器,那么当你再次取出时可以将它向下转型回原来的型别:(String)object,这样你就可以打印当初装载进去的字符串了。 arrlist.add(new Student());这句话是重点你往arrlist放了个Student对象要想取其内容先取出Student对象然后从取出的Student对象中再取内容 重载Object的toString方法。public String toString(){}默认的toString方法输出为类名@对象哈希码 菜鸟提问classpath问题 谁给我一篇关于Java动画的论文啊 论坛帖子拖尾!急 有关office2007 junit 测试时,assertNull(String,String)的结果如何得到? 请问二进制的10101010表示的byte值是多少? 请问有几个JAVA包,想生成象JAVADOC的DOC文档,有什么好的方法? 为什么awt组件无法在html中显示? 对着上打程序都不对呀!!!! java中如何求得某月某周的第一天和最后一天 Java的输入函数是什么? 自己写的一堆class想弄成一个package,请问java对于package命名有什么规则么?
arrlist.add(new Student()); //存入arrlist
str = bf.readLine();
}
你这段代码什么意思?你这样是每次从文件里读一行,就将一个新建的Student()对象加到arrlist里,你加的根本就不是读入的数据!不知道你在干什么,你想干什么了!
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");
} }
}
这句话是重点你往arrlist放了个Student对象
要想取其内容先取出Student对象
然后从取出的Student对象中再取内容
public String toString(){}
默认的toString方法输出为类名@对象哈希码