这个地方为什么一直报错?

来源:4-11 学生选课---通过 Set 集合管理课程

Soloist

2019-04-10 16:25

package com.imooc.collection;import java.util.List;import java.util.ArrayList;import java.util.Arrays;import java.util.Scanner;public class SetTest {		public List<Course>coursesToSelect;		public SetTest() {			coursesToSelect=new ArrayList<Course>();		}		/**		* 用于往coursesToSelect中添加备选课程		* @param args		*/		public void testAdd() {			//创建一个课程对象,并通过调用add方法,添加到备选课程list中			Course cr1 = new Course("1", "数据结构");			coursesToSelect.add(cr1);			Course temp = (Course) coursesToSelect.get(0);			// System.out.println("添加了课程:" + temp.id + ":" + temp.name);			Course cr2 = new Course("2", "C语言");			coursesToSelect.add(0, cr2);			Course temp2 = (Course) coursesToSelect.get(0);			// System.out.println("添加了课程:" + temp2.id + ":" + temp2.name);			// coursesToSelect.add(cr1);			// Course temp0 = (Course) coursesToSelect.get(2);			// System.out.println("添加了课程:" + temp.id + ":" + temp.name);			// 以下方法会抛出数组下标越界异常			// Course cr3 = new Course("3", "test");			// coursesToSelect.add(4, cr3);			Course[] course = { new Course("3", "离散数学"), new Course("4", "汇编语言") };			coursesToSelect.addAll(Arrays.asList(course));			Course temp3 = (Course) coursesToSelect.get(2);			Course temp4 = (Course) coursesToSelect.get(3);			// System.out.println("添加了两门课程:" + temp3.id + ":" +			// temp3.name + ";" + temp4.id + ":" + temp4.name);			Course[] course2 = { new Course("5", "高等数学"), new Course("6", "大学英语") };			coursesToSelect.addAll(2, Arrays.asList(course2));			Course temp5 = (Course) coursesToSelect.get(2);			Course temp6 = (Course) coursesToSelect.get(3);			// System.out.println("添加了两门课程:" + temp5.id + ":" +			// temp5.name + ";" + temp6.id + ":" + temp6.name)		}		/**		* 通过for each方法访问集合元素		* @param args		*/		public void testForEach() {			System.out.println("有如下课程待选(通过for each访问):");			for(Object obj:coursesToSelect) {				Course cr =(Course)obj;				System.out.println("课程"+cr.id+":"+cr.name);			}		}		/**		* 		* @param args		*/	public static void main(String[] args) {		// TODO Auto-generated method stub		SetTest st=new SetTest();		st.testAdd();		st.testForEach();		//创建一个学生对象		Student student=new Student("1", "小明");		System.out.println("欢迎学生:"+student.name+"选课!");		//创建一个scanner对象,用来接收从键盘输入的课程id		Scanner console =new Scanner(System.in);		for (int i=0;i<3;i++) {			System.out.println("请输入课程id:");			String courseId=console.next();			for(Course cr:st.coursesToSelect) {				if (cr.id.equals(courseId)) {					student.courses.add(cr);					/**					* set中,添加某个对象,无论添加多少次,最终只会保留一个该对象(的引用),并且,保留的是第一次添加的那一个					*/					//student.courses.add(null);					student.courses.add(cr);				}			}		}		st.testForEachForSet(student);	}	public void testForEachForSet(Student student) {		//打印输出,学生所选的课程!		System.out.println("共选择了"+student.courses.size()+"门课程");		for (Course cr :student.courses) {			System.out.println("选择了课程:"+cr.id+":"+cr.name);		}	}}

https://img4.mukewang.com/5cada7fb000182e008740176.jpg

写回答 关注

4回答

  • 慕粉7367658
    2019-08-22 21:52:14

    改完泛型之后 保存一下 

  • qq_慕圣2566072
    2019-06-02 22:02:21

    在Set Test中转换为Course没?


  • 慕沐6598592
    2019-04-14 01:29:23

    Student类中的courses属性没有添加泛型<Course>,所以此处foreach遍历的集合类中还是Object类型

    qq_墨伤_...

    请问添加了为啥还是报错

    2019-04-23 16:22:24

    共 1 条回复 >

  • weixin_慕用8305967
    2019-04-11 19:16:13

    强制转换一下试试

Java入门第三季

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

409792 学习 · 4340 问题

查看课程

相似问题