原题部分:编写班级类,一个班级可以存放多个学生。
请编写方法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;
}
}
为什么运行时提示红色部分有问题,上面的方法是返回一个学生类数组啊
请编写方法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;
}
}
为什么运行时提示红色部分有问题,上面的方法是返回一个学生类数组啊
代码不能加颜色的么,请各位无视下那个COLOR
最好配置好泛型 在看看
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);
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());
}
}
}
return list2.toArray(new Student[0]); 试试看呢?
看 6楼写法 光给 list2加泛型 去没给 参数加 - -
{ 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[],使用的时候再强制转换!