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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

lass Data {
        int        val;

        int        getVal() {
                return val;
        }

        void        setVal(int val) {
                this.val = val;
        }
}

public class ListTest {

  public static void main(String argv[]) {
          Data data = new Data();

          ArrayList list = new ArrayList();

          for (int i=100; i<103; i++) {
            data.setVal(i);
            list.add(data);
     }

        int j = 0;
        while (j < list.size()) {
                  Data tmp = (Data )list.get(j);
                  System.out.println("list(" + j + ") = " + tmp.getVal());
                 j++;
        }
  }
}

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

2 个回复

正序浏览
class Data {//创建一个data类
        int        val;
//data类的 get set 方法   两个方法都不标准   public int 方法公共 这里没设置
        int        getVal() {
                return val;
        }
        void      setVal(int val) {
                this.val = val;
        }
}

public class ListTest {//创建个 listTest类

  public static void main(String argv[]) {//listTest的主函数
          Data data = new Data();    //创建一个data类对象

          ArrayList list = new ArrayList();//创建一个arraylist对象

          for (int i=100; i<103; i++) {//此循环三次  100  101 102
            data.setVal(i);                 //给data类对象赋值   data对象找不到 setVal 方法
            list.add(data);                 //给list对象添加一个元素
     }

        int j = 0;
        while (j < list.size()) {
                  Data tmp = (Data )list.get(j);        
                  System.out.println("list(" + j + ") = " + tmp.getVal());           //这里也一样   Data类对象  tmp找不到 getVal 方法
                 j++;
        }
  }
}
所以程序最终不能运行。

评分

参与人数 1技术分 +2 收起 理由
admin + 2

查看全部评分

回复 使用道具 举报
结果是:
list(0) = 102
list(1) = 102
list(2) = 102
如果这不是你想要的结果,那是因为你只new了一个Data对象,
试试把Data data = new Data();放在for循环里面,这样可得到结果:
list(0) = 100
list(1) = 101
list(2) = 102


评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马