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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ㄗs:/|丶hearts 中级黑马   /  2013-7-19 17:47  /  1236 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 ㄗs:/|丶hearts 于 2013-7-19 21:33 编辑
  1. import java.util.ArrayList;

  2. class Data {
  3. int val;
  4. }

  5. public class Test5 {
  6. public static void main(String args[]) {
  7. Data data = new Data();
  8. ArrayList list = new ArrayList();

  9. for (int i = 100; i < 103; i++) {
  10. data.val = i;
  11. list.add(data);
  12. }

  13. for (Data d : list) { //这里为什么会报错呀
  14. System.out.println(d.val);
  15. }
  16. }
  17. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
神之梦 + 1 淡定

查看全部评分

2 个回复

倒序浏览
这里遍历出来的应该是一个Object对象,你下面的改应该就可以了,还有就是你这应该是一个对象修改val属性后存进去多次哈,运行出来的结果应该是打印3个102啊,
  1. for (Object obj : list) {
  2.       Data d = (Data)obj;
  3.       System.out.println(d.val);
  4. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
神之梦 + 1 赞一个!

查看全部评分

回复 使用道具 举报
1.List 集合中存储的都是对象 ,即Object ,你这个肯定会 出错。
2.我想你是想打印出 100,101,102 吧,应该这样改咯,因为你存储的都是同一个对象。
  1. class Data {
  2.         int val;
  3.         }

  4.         public class Test5 {
  5.         public static void main(String args[]) {
  6.         
  7.         ArrayList list = new ArrayList();

  8.         for (int i = 100; i < 103; i++) {
  9.                 Data data = new Data();
  10.         data.val = i;
  11.         list.add(data);
  12.         }

  13.         for (Object obj : list) {
  14.                 Data d=(Data)obj;
  15.         System.out.println(d.val);
  16.         }
  17.         }
  18.         }
复制代码
望好好理解。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马