A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

黄邦荣

初级黑马

  • 黑马币:0

  • 帖子:16

  • 精华:0

© 黄邦荣 初级黑马   /  2012-10-26 13:21  /  1433 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

package itcast;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class Test {
public static void sop(Object obj) {
  System.out.println(obj);
}
public static void main(String[] args)
{
  ArrayList al = new ArrayList();
  
  al.add("1");
  al.add("2");
  al.add("3");
  al.add("4");
  Iterator it= al.iterator();
  while(it.hasNext());
  {
   sop("next:"+it.next());
  }
}

}
编译能通过,但是没结果,这是什么情况,纠结了半小时了

未命名.jpg (39.23 KB, 下载次数: 21)

未命名.jpg

评分

参与人数 1黑马币 +6 收起 理由
谭立文 + 6 淡定

查看全部评分

5 个回复

倒序浏览
本帖最后由 周万谋 于 2012-10-26 13:33 编辑

首先,你的代码中添加的元素是String类型,那么在用迭代器取的时候需要强制类型转换,因为迭代器取出来的对象是Object类型的,
String str = (String) it.next();
其次,建议使用泛型,泛型可以限制添加的是同一个类型,泛型还可以将运行时异常转至编译期,泛型还有一个很爽的优点,取出的元素可以不用强转,建议这样写:
ArrayList<String> al = new ArrayList<String>();
  ......
回复 使用道具 举报
兄弟, 问题是你的while()后面有个分号 啊 , 下次小心点啊!

评分

参与人数 1黑马币 +12 收起 理由
谭立文 + 12

查看全部评分

回复 使用道具 举报
3楼正解,细节决定成败。
回复 使用道具 举报
一失足成千古恨啊
回复 使用道具 举报
要么在定义集合的时候定义泛型,要么就在迭代时强转
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马