求大神,哪里错了?

来源:4-6 学生选课—课程查询

Jack_P_Wang

2016-05-02 22:52

package com.imooc.collection;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;

/**
 * 备选课程类
 * @author Jack
 *
 */
public class ListTest {
	//用于存放备选课程
	public List coursesToSelect;
	
	public ListTest(){
		this.coursesToSelect = new ArrayList();
	}
	//add courses
	public void testAdd(){
		Courses cou1 = new Courses();
		cou1.setId("1");
		cou1.setName("数据结构");
		coursesToSelect.add(cou1);
		Courses c = (Courses) coursesToSelect.get(0);
		System.out.println("添加了课程:"+c.getId()+" "+c.getName());
		
		cou1.setId("2");
		cou1.setName("高等数学");
		coursesToSelect.add(cou1);																								
		Courses c1 = (Courses) coursesToSelect.get(1);				
		System.out.println("添加了课程:"+c1.getId()+" "+c1.getName());
	}
	
	public void testIterator(){
		Iterator it = coursesToSelect.iterator();
		while(it.hasNext()){
			Courses cs = (Courses) it.next();
			System.out.println(cs.getId()+" "+cs.getName());
		}
	}
	
	public void testForEach(){
		for(Object obj : coursesToSelect){
			Courses co = (Courses)obj;
			System.out.println(co.getId()+" "+co.getName());
		}
	}
	public static void main(String[] args){
		ListTest lt = new ListTest();
		lt.testAdd();
		lt.testIterator();
		lt.testForEach();
	}
	
}

输出如下:

http://img.mukewang.com/5727697100018fde02780237.jpg

写回答 关注

2回答

  • Jzhiy_shen
    2016-05-02 23:54:11
    已采纳

    应该在第28行写入创建一个新的course的代码:Courses cou2 = new Courses();     然后下面两行的cou1改成cou2应该就可以了。

    Jack_P...

    非常感谢!

    2016-05-03 11:47:07

    共 1 条回复 >

  • 慕工程7344558
    2016-05-03 00:38:36

    因为Arraylist add()是引用,就是一个指向cou1的地址,然后你用set方法覆盖了之前cou1这个对象像的内容,Arraylist放着两个cou1,里面都是“2,高等数学”。

    需要再申请一个对象存放“2,高等数学”

    Jack_P...

    非常感谢!

    2016-05-03 11:47:32

    共 1 条回复 >

Java入门第三季

Java中你必须懂得常用技能,不容错过的精彩,快来加入吧

409792 学习 · 4340 问题

查看课程

相似问题