java中将类添加到Vector后面,类中有多元素的一个Vector,只有最后一个元素输出
这是 school 类中的一个函数,用来向student类中添加一条记录
info数组的格式为 姓名 课程名 分数 课程名 分数 课程名 分数 ....
school类中,有个stu的Vector, 还有个stemp,都是class student类型
下面的代码是添加一条记录,
// Vector <student> stu = new Vector <student>
// student stemp = new student();
public void addstu(String[] info){
stemp.name = info[0]; //学生姓名
//感觉这一步出了问题
stemp.addcou(info); //添加课程 函数代码在下面
stu.addElement(stemp); //把做好的类放到Vector最后
System.out.println(stemp.cou.elementAt(0).c_name);
int i = 0;
while(i<3){
System.out.println("-----1-----");
System.out.println(stemp.name);
System.out.println(stu.elementAt(0).cou.elementAt(i).c_name);
System.out.println(stemp.cou.elementAt(i).c_name);
i++;
}
}
这是student类中的一个函数,用来给一个学生添加课程
类中有个cou 的 Vector, 和一个 ctemp 都是class course类型。
// Vector <course> cou = new Vector <course>
// course ctemp = new course();
public void addcou(String[] info){
int length = info.length;
int i = 1;
while(i<length){
ctemp.c_name = info[i]; //存入课程名
ctemp.mark = Integer.parseInt(info[i+1]); //存入成绩
i+=2;
cou.addElement(ctemp); //在结尾添加ctemp
System.out.println("-----2-----");
System.out.println(cou.elementAt((i-2)/2).c_name);
cou_num++;
}
}
结果现在遇到的问题是,
比如我输入的是
name math 100 cs 90 english 80
第二个函数输出
-----2-----
math
-----2-----
cs
-----2-----
english
是正确的
但是第一行却是
-----1-----
name
english
english
-----1-----
name
english
english
-----1-----
name
english
english
3条都是最后一个元素
为什么呢?是因为内部的Vector 传出来出现了问题吗?
------解决方案--------------------你这是对一个对象添加了三遍值
// course ctemp = new course();应该生成三个course 对象的,而不是一个!!!!这句话应该移到下面的方法里面。。
public void addcou(String[] info){
int length = info.length;
int i = 1;
while(i<length){
//在这里new course();
ctemp.c_name = info[i]; //存入课程名
ctemp.mark = Integer.parseInt(info[i+1]); //存入成绩
i+=2;
cou.addElement(ctemp); //在结尾添加ctemp
System.out.println("-----2-----");
System.out.println(cou.elementAt((i-2)/2).c_name);
cou_num++;
}
}