java写的一个小程序,编译通过了,运行时却没有任何输出,求教!

cantiaozi 2017-03-23 09:59:04
java小程序如下:
import java.util.*;
public class TestIterator {
public static void main(String []args) {
Name name1 = new Name("n1","f1");
Name name2 = new Name("n2","f2");
Name name3 = new Name("n3","f3");

Collection c = new HashSet();
Iterator i = c.iterator();
c.add(name1);
c.add(name2);
c.add(name3);

while (i.hasNext()) {
Name name = (Name)i.next();
String firstName = name.firstName;
System.out.println(firstName + "");
}
}
}

class Name {
public String firstName;
public String lastName;

Name(String firstName,String lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
}

编译通过了,运行时却没有任何输出,我明明用了System.out.println(),这是为什么?
...全文
924 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_37849365 2017-04-10
  • 打赏
  • 举报
回复
你一边用迭代器,一边添加,那是不可以的。 我也是刚学Java,就看出来这个问题
China小嘿 2017-04-10
  • 打赏
  • 举报
回复
先赋值在用迭代器
蜗牛行者 2017-04-10
  • 打赏
  • 举报
回复
为啥没报ConcurrentModificationException 并发修改异常????
丶丶路遥 2017-04-09
  • 打赏
  • 举报
回复
为啥没报ConcurrentModificationException 并发修改异常
l18272900126 2017-04-06
  • 打赏
  • 举报
回复
为啥没报ConcurrentModificationException 并发修改异常
哔啵啵哔啵哔 2017-03-23
  • 打赏
  • 举报
回复
Iterator i = c.iterator(); 这个地方,c是没有值的,所以i是null。
o枫叶o 2017-03-23
  • 打赏
  • 举报
回复

Collection c = new HashSet();
      c.add(name1);
      c.add(name2);
      c.add(name3);
      Iterator i = c.iterator();
设完值再拿Iterator才有效。
timo001 2017-03-23
  • 打赏
  • 举报
回复
引用 2 楼 qlz522044161 的回复:
Iterator i = c.iterator();
c.add(name1);
c.add(name2);
c.add(name3);
改成
c.add(name1);
c.add(name2);
c.add(name3);
Iterator i = c.iterator();
创建I的时候,c还没有值
import java.util.*;

public class TestIterator {
public static void main(String []args) {
Name name1 = new Name("n1","f1");
Name name2 = new Name("n2","f2");
Name name3 = new Name("n3","f3");

Collection c = new HashSet();

c.add(name1);
c.add(name2);
c.add(name3);
Iterator i = c.iterator();
while (i.hasNext()) {
Name name = (Name)i.next();
String firstName = name.firstName;
System.out.println(firstName + "");
}
}
}

class Name {
public String firstName;
public String lastName;

Name(String firstName,String lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
}
timo001 2017-03-23
  • 打赏
  • 举报
回复
Iterator i = c.iterator();
c.add(name1);
c.add(name2);
c.add(name3);
改成
c.add(name1);
c.add(name2);
c.add(name3);
Iterator i = c.iterator();
创建I的时候,c还没有值
u012434613 2017-03-23
  • 打赏
  • 举报
回复
while (i.hasNext()) { } 要有数据才会走进去
NewMoons 2017-03-23
  • 打赏
  • 举报
回复
大家的答案都正确。
田地里的蚂蚁 2017-03-23
  • 打赏
  • 举报
回复
你的迭代器应该要放在集合添加数据后面,不然你在add()方法前面,那时候,集合还是null的,所以没有数据打印出来,,只要放在add()方法后面就可以

62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧