黑马程序员技术交流社区
标题:
for循环不执行,求解释。
[打印本页]
作者:
银离子
时间:
2014-12-20 23:43
标题:
for循环不执行,求解释。
把对象存到集合中,再存到文件里,for循环为什么不执行??
import java.io.*;
import java.util.*;
//import java.lang.*;
class person implements Comparable<person>
{
private String name;
private int age;
private int text;
person(String name,int age,int text){
this.name=name;
this.age=age;
this.text=text;
}
public int hashCode(){
return name.hashCode()+age;
}
public boolean equals(Object obj){
if(!(obj instanceof person))
{
}
person p=(person)obj;
return this.name.equals(p.name)&&this.age==p.age;
}
public int compareTo (person a){
person s=a;
if(this.age==s.age)
return this.name.compareTo(s.name);
return this.age-s.age;
}
public String tostring(){
return this.name+" "+(this.age+"")+" "+(this.text+"");
}
}
public class zifudemo {
/**
* @param args
*/
public static void main(String[] args) throws IOException
{// TODO Auto-generated method stub
//demo();
TreeSet<person> sss=new TreeSet<person>();
File file=new File("E:\\javatext\\javademo3.txt");
rinfo(sss);
w2file(sss,file);
}
public static void rinfo(TreeSet<person> set)throws IOException
{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
String s=null;
set=new TreeSet<person>();
while(true){
s=br.readLine();
if(s.equals("over"))
{
break;
}
String [] st=s.split(" ");
System.out.println("执行到了while");
set.add(new person(st[0],Integer.parseInt(st[1]),Integer.parseInt(st[2])));
}
System.out.println("执行到了rinfo");
br.close();
}
public static void w2file(Set<person> s,File f)throws IOException
{
BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(new FileOutputStream(f,true)));
for(person ss:s)
{
bw.write(ss.tostring());
bw.newLine();
bw.flush();
System.out.println("执行到for");
}
bw.close();
System.out.println("执行到w2file");
}
复制代码
作者:
银离子
时间:
2014-12-20 23:45
w2file方法中的for循环
作者:
奋斗的蜗牛ksd
时间:
2014-12-21 01:53
本帖最后由 奋斗的蜗牛ksd 于 2014-12-21 01:56 编辑
问题就出在 你的add方法理解错误!
add 方法里面参数列表不匹配
如果想添加对象的元素 这样添加 add(new Person( 参数列表 参数类型一定要匹配));
API:add
public boolean add(E e)将指定的元素添加到此 set(如果该元素尚未存在于 set 中)。更确切地讲,如果该 set 不包含满足 (e==null ? e2==null : e.equals(e2)) 的元素 e2,则将指定元素 e 添加到此 set 中。如果此 set 已经包含这样的元素,则该调用不改变此 set 并返回 false。
电脑没电了 2点啦。你的问题我只粗略看了,粗略分析,有疑问可以交流
白天有时间在认真看看。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2