问答详情
源自:4-11 学生选课---通过 Set 集合管理课程

student.courses.add(cr);报错误啊

package 选课;


import java.util.ArrayList;


import java.util.Collection;

import java.util.Iterator;

import java.util.List;

import java.util.Scanner;


import cloo.Course;


public class SetTest {


public List<Course>coursesToSelect;//带泛型的备选课程属性


//构造器 初始化属性

public SetTest(){

coursesToSelect=new ArrayList<Course>();

}

public void ListTest(){

this.coursesToSelect=new ArrayList();//List类不能实例初始化,需要用到兄弟ArrayList

}

/*

 * 用于增加备选课程到coursesToSelect里

 */

//创建一个课程对象 用ADD方法添加进去

public void testAdd(){

Course cr1=new Course("1","数据结构");

coursesToSelect.add(cr1); //这个是往集合coursesToSelect里增加一个元素

Course temp=(Course)coursesToSelect.get(0);//如果想打印添加进去的信息我们需要把这个文字取出来而且对象在集合里会

//System.out.println("添加的课程为:"+temp.id+"  "+temp.name); //变成OBJECT类型 需要类型转换转换为Course类型

//这里如果直接打印temp值的话只会出现数字码,需要明确指定打印什么XXX.id


//第二种方法

Course cr2=new Course("2","C语言");//第二种添加方法

coursesToSelect.add(0, cr2);//这种方法可以选择插入的位置 0就是插入第一位。把cr1顶下去

Course temp2=(Course)coursesToSelect.get(0);//取得第0个位置

//System.out.println("添加的课程为:"+temp2.id+"  "+temp2.name);


//Course cr3=new Course("3","test");

//coursesToSelect.add(2,cr3);//这里不能跳过一个添加 只能新加1个比如前面有两个 0和1 这里只能是2




/*coursesToSelect.add(cr1);//这个可以往List里加课程

Course temp0 = (Course) coursesToSelect.get(0);//list的取得方法加了个类型强转

System.out.println("添加课程成功:"+temp.id+","+temp.name);*/


//第三种方法 用数组加入进去 下面是数组加入两个新方法

Course[] course={new Course("3","离散数学"),new Course("4","汇编语言")};

coursesToSelect.addAll(Arrays.asList(course));//通过这个Arrays.asList工具类方法将数组转换为List集合里

Course temp3=(Course)coursesToSelect.get(3);

Course temp4=(Course)coursesToSelect.get(4);//照样取出来强转

//System.out.println("添加的课程为:"+temp3.id+"  "+temp3.name+temp4.id+"  "+temp4.name );

//因为有两个课程 需要取出两次而且注意GET位置


//第四种增加方法 

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 );


}

//可以直接打印出备选课程

public void testForEach(){//这是foreach方法 用一个新的obj类型的变量比集合

for(Object obj:coursesToSelect){

Course cr=(Course) obj;

System.out.println("课程"+cr.id+cr.name);

}

}


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.id+student.name+"选课");

Scanner console =new Scanner(System.in);

//创建一个Scanner对象

for(int i =0;i<3;i++){

System.out.println("请输入课程ID");

String shuID=console.next();

for(Course cr:st.coursesToSelect){

if(cr.id.equals(shuID)){

student.courses.add(cr);

}

}

}

}


}

老是报错啊亲们- -看来看去看不出哪里错

提问者:英雄莫问过 2016-08-30 17:47

个回答

  • 你已走远
    2016-09-18 16:49:41

    package pokegame;
    
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.List;
    import java.util.Scanner;
    
    import com.imooc.collection.Course;
    import com.imooc.collection.Student;
    
    public class SetTest {
    
    public List<Course>coursesToSelect;//带泛型的备选课程属性
    
    //构造器 初始化属性
    public SetTest(){
    coursesToSelect=new ArrayList<Course>();
    }
    public void ListTest(){
    this.coursesToSelect=new ArrayList();//List类不能实例初始化,需要用到兄弟ArrayList
    }
    /*
     * 用于增加备选课程到coursesToSelect里
     */
    //创建一个课程对象 用ADD方法添加进去
    public void testAdd(){
    Course cr1=new Course("1","数据结构");
    coursesToSelect.add(cr1);	//这个是往集合coursesToSelect里增加一个元素
    Course temp=(Course)coursesToSelect.get(0);//如果想打印添加进去的信息我们需要把这个文字取出来而且对象在集合里会
    //System.out.println("添加的课程为:"+temp.id+"  "+temp.name);	//变成OBJECT类型 需要类型转换转换为Course类型
    //这里如果直接打印temp值的话只会出现数字码,需要明确指定打印什么XXX.id
    
    //第二种方法
    Course cr2=new Course("2","C语言");//第二种添加方法
    coursesToSelect.add(0, cr2);//这种方法可以选择插入的位置 0就是插入第一位。把cr1顶下去
    Course temp2=(Course)coursesToSelect.get(0);//取得第0个位置
    //System.out.println("添加的课程为:"+temp2.id+"  "+temp2.name);
    
    //Course cr3=new Course("3","test");
    //coursesToSelect.add(2,cr3);//这里不能跳过一个添加 只能新加1个比如前面有两个 0和1 这里只能是2
    
    
    
    /*coursesToSelect.add(cr1);//这个可以往List里加课程
    Course temp0 = (Course) coursesToSelect.get(0);//list的取得方法加了个类型强转
    System.out.println("添加课程成功:"+temp.id+","+temp.name);*/
    
    //第三种方法 用数组加入进去 下面是数组加入两个新方法
    Course[] course={new Course("3","离散数学"),new Course("4","汇编语言")};
    coursesToSelect.addAll(Arrays.asList(course));//通过这个Arrays.asList工具类方法将数组转换为List集合里
    Course temp3=(Course)coursesToSelect.get(3);
    Course temp4=(Course)coursesToSelect.get(4);//照样取出来强转
    //System.out.println("添加的课程为:"+temp3.id+"  "+temp3.name+temp4.id+"  "+temp4.name );
    //因为有两个课程 需要取出两次而且注意GET位置
    
    //第四种增加方法 
    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 );
    
    }
    //可以直接打印出备选课程
    public void testForEach(){//这是foreach方法 用一个新的obj类型的变量比集合
    for(Object obj:coursesToSelect){
    Course cr=(Course) obj;
    System.out.println("课程"+cr.getId()+cr.getName());
    }
    }
    
    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.getId()+student.getName()+"选课");
    Scanner console =new Scanner(System.in);
    //创建一个Scanner对象
    for(int i =0;i<3;i++){
    System.out.println("请输入课程ID");
    String shuID=console.next();
    for(Course cr:st.coursesToSelect){
    if(cr.getId().equals(shuID)){
    student.getCourse().add(cr);
    }
    }
    }
    }
    
    }

    我改过来了,我student类里面加了get,set方法,你可以试试

  • 慕粉3675382
    2016-09-09 22:27:14

    你导入的这个包import cloo.Course;是来干啥的?

  • 1996青年
    2016-08-30 20:24:11

    import java.util.Arrays;

  • 1996青年
    2016-08-30 20:23:12

    Arrays.asList(course2)调用的时候需要导包 

  • Deadkidd
    2016-08-30 20:16:04

    可以把运行程序时的错误信息贴出来吗?方便错误定位,谢谢~