原题部分:编写班级类,一个班级可以存放多个学生。
请编写方法addStudent(Student stu);增加一个学员
请编写方法 remove()方法,删除一个学员。删除有二种方式,第一种,可以传入下标,第二种,可以传入对象。
一个班级与另一个班级联宜,请编写方法unionClass(List list);将两个班级的学员合并成一个班级。
请编写方法Student[] getStudetnGroup(int begin,int end);取出指定下标范围内的学员,返回一个学员数组。我的代码:package com.yj;import java.util.ArrayList;
import java.util.LinkedList;public class StuClass {

ArrayList list = new ArrayList();

//增加学生的方法
public void addStudent(Student stu){
list.add(stu);
}

//根据下标删除学生的方法
public void remove(int index){
list.remove(index);
}

//根据学生对象删除的方法
public void remove(Student stu){
list.remove(stu);
}

//联谊的方法
public void unionClass(ArrayList list){
this.list.addAll(list);
}

//取出下标范围,得到学生数组
public Student[] getStudentGroup(int begin,int end){
ArrayList list2 = new ArrayList();
for(int i=begin;i<end;i++){
list2.add(list.get(i));
}
return (Student[])list2.toArray();
}

public static void main(String[] args) {
StuClass c1 = new StuClass();
Student s1 = new Student("张三");
Student s2 = new Student("李四");
Student s3 = new Student("豆豆");
Student s4 = new Student("宝宝");
Student s5 = new Student("峰峰");
c1.addStudent(s1);
c1.addStudent(s2);
c1.addStudent(s3);
c1.addStudent(s4);
c1.addStudent(s5);
System.out.println("第一个班的同学");
for(int i=0;i<c1.list.size();i++){
Student s =(Student)c1.list.get(i);
System.out.println(s.getName());
}

StuClass c2 = new StuClass();
Student s6 = new Student("王五");
Student s7 = new Student("马六");
c2.addStudent(s6);
c2.addStudent(s7);
System.out.println("第二个班的同学");
for(int i=0;i<c2.list.size();i++){
Student s =(Student)c2.list.get(i);
System.out.println(s.getName());
}

c1.unionClass(c2.list);
System.out.println("联谊后的同学");
for(int i=0;i<c1.list.size();i++){
Student s =(Student)c1.list.get(i);
System.out.println(s.getName());
}

Student[] stu =c1.getStudentGroup(0, 3);
for(int i=0;i<stu.length;i++){
System.out.println(stu[i].getName());
}
}
}
class Student{
private String name;
public Student(String name){
this.name=name;
}
public String getName(){
return this.name;
}
}
为什么运行时提示红色部分有问题,上面的方法是返回一个学生类数组啊

解决方案 »

  1.   

    return (Student[])list2.toArray();     
    代码不能加颜色的么,请各位无视下那个COLOR
      

  2.   

    ArrayList<Student> list2 = new ArrayList<Student>();
    最好配置好泛型 在看看
      

  3.   

    配置好泛型还是错误
    Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object;
    at com.yj.StuClass.getStudentGroup(StuClass.java:36)
    at com.yj.StuClass.main(StuClass.java:76)
    问题行数代码是:
    return (Student[])list2.toArray(); 
    以及
    Student[] stu =c1.getStudentGroup(0, 3);
      

  4.   


    public class StuClass {
        
    List<Student> list = new ArrayList<Student>();
        
        //增加学生的方法
        public void addStudent(Student stu){    
            list.add(stu);
        }
        
        //根据下标删除学生的方法
        public void remove(int index){
            list.remove(index);
        }
        
        //根据学生对象删除的方法
        public void remove(Student stu){
            list.remove(stu);
        }
        
        //联谊的方法
        public void unionClass(List<Student> list){
            this.list.addAll(list);
        }
        
        //取出下标范围,得到学生数组
        public Student[] getStudentGroup(int begin,int end){
            List<Student> list2 = new ArrayList<Student>();
            for(int i=begin;i<end;i++){
                list2.add(list.get(i));
            }
           return list2.toArray(new Student[0]);       
        }
        
        public static void main(String[] args) {
            StuClass c1 = new StuClass();
            Student s1 = new Student("张三");
            Student s2 = new Student("李四");
            Student s3 = new Student("豆豆");
            Student s4 = new Student("宝宝");
            Student s5 = new Student("峰峰");
            c1.addStudent(s1);
            c1.addStudent(s2);
            c1.addStudent(s3);
            c1.addStudent(s4);
            c1.addStudent(s5);
            System.out.println("第一个班的同学");
            for(int i=0;i<c1.list.size();i++){        
                Student s =(Student)c1.list.get(i);        
                System.out.println(s.getName());
            }
            
            StuClass c2 = new StuClass();
            Student s6 = new Student("王五");
            Student s7 = new Student("马六");
            c2.addStudent(s6);
            c2.addStudent(s7);
            System.out.println("第二个班的同学");
            for(int i=0;i<c2.list.size();i++){        
                Student s =(Student)c2.list.get(i);            
                System.out.println(s.getName());
            }    
            
            c1.unionClass(c2.list);
            System.out.println("联谊后的同学");
            for(int i=0;i<c1.list.size();i++){        
                Student s =(Student)c1.list.get(i);    
                System.out.println(s.getName());
            }
        
            Student[] stu =c1.getStudentGroup(0, 3);      
            for(int i=0;i<stu.length;i++){
                System.out.println(stu[i].getName());
            }
        }
    }
      

  5.   

    加了泛型的话
    return list2.toArray(new Student[0]); 试试看呢?
      

  6.   


    看 6楼写法  光给  list2加泛型  去没给  参数加 - -
      

  7.   

    public class StuClass
    {    ArrayList<Student> list = new ArrayList<Student>();    // 增加学生的方法
        public void addStudent(Student stu)
        {
            list.add(stu);
        }    // 根据下标删除学生的方法
        public void remove(int index)
        {
            list.remove(index);
        }    // 根据学生对象删除的方法
        public void remove(Student stu)
        {
            list.remove(stu);
        }    // 联谊的方法
        public void unionClass(ArrayList<Student> list)
        {
            this.list.addAll(list);
        }    // 取出下标范围,得到学生数组
        public Object[] getStudentGroup(int begin, int end)
        {
            ArrayList<Student> list2 = new ArrayList<Student>();
            for (int i = begin; i < end; i++)
            {
                list2.add(list.get(i));
            }
            return (Object[])list2.toArray();
        }    public static void main(String[] args)
        {
            StuClass c1 = new StuClass();
            Student s1 = new Student("张三");
            Student s2 = new Student("李四");
            Student s3 = new Student("豆豆");
            Student s4 = new Student("宝宝");
            Student s5 = new Student("峰峰");
            c1.addStudent(s1);
            c1.addStudent(s2);
            c1.addStudent(s3);
            c1.addStudent(s4);
            c1.addStudent(s5);
            System.out.println("第一个班的同学");
            for (int i = 0; i < c1.list.size(); i++)
            {
                Student s = (Student)c1.list.get(i);
                System.out.println(s.getName());
            }        StuClass c2 = new StuClass();
            Student s6 = new Student("王五");
            Student s7 = new Student("马六");
            c2.addStudent(s6);
            c2.addStudent(s7);
            System.out.println("第二个班的同学");
            for (int i = 0; i < c2.list.size(); i++)
            {
                Student s = (Student)c2.list.get(i);
                System.out.println(s.getName());
            }        c1.unionClass(c2.list);
            System.out.println("联谊后的同学");
            for (int i = 0; i < c1.list.size(); i++)
            {
                Student s = (Student)c1.list.get(i);
                System.out.println(s.getName());
            }        Object[] stu = c1.getStudentGroup(0, 3);
            for (int i = 0; i < stu.length; i++)
            {
                System.out.println(((Student)stu[i]).getName());
            }
        }
    }class Student
    {
        private String name;    public Student(String name)
        {
            this.name = name;
        }    public String getName()
        {
            return this.name;
        }
    }还是不要直接转换为Student[],而是用Object[],使用的时候再强制转换!