黑马程序员技术交流社区

标题: List集合 高级for循环时 的错误 [打印本页]

作者: ㄗs:/|丶hearts    时间: 2013-7-19 17:47
标题: List集合 高级for循环时 的错误
本帖最后由 ㄗ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. }
复制代码

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

作者: 在乎..    时间: 2013-7-19 20:03
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.         }
复制代码
望好好理解。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2