我想比较这两个载体,以便它将返回有多少患者也是学生。我得到了主要的,我已经添加到HistAndMarks方法但它似乎没有工作。主要的混淆是使用HistAndMarks方法以及如何比较两个向量。
由于
import java.util.*;
public class Ex6 {
public static int count = 0;
public static void main(String[] a)
{
Vector<Patient> P = new Vector<Patient>();
Vector<Student> S = new Vector<Student>();
int i=Integer.parseInt(a[0]);
if (i==0) {
P.add(new Patient("Jimmy1","1","d"));
P.add(new Patient("Jimmy2","1","d"));
P.add(new Patient("Jimmy3","1","d"));
P.add(new Patient("Jimmy","1","d"));
S.add(new Student("Jimmy1","1",null) );
S.add(new Student("Jimmy2","1",null) );
S.add(new Student("Jimmy3","1",null) );
S.add(new Student("Lisa","1",null) );
System.out.println(new Ex6().HistAndMarks(P,S));
}
if (i==1) {
P.add(new Patient("Jimmy","1","d"));
S.add(new Student("Jimmy1","1",null) );
System.out.println(new Ex6().HistAndMarks(P,S));
}
if (i==2) System.out.println(new Ex6().HistAndMarks(P,null));
}
public static int HistAndMarks (Vector<Patient> P, Vector<Student> S) {
for(int i = 0; i > P.size(); i++){
for(int z = -1; z > S.size(); z++){
Patient Pnew = P.get(i);
Student Snew = S.get(z + 1);
if(P.contains(S)){
count = count + 1;
}
}
}
return count;
}
}
答案 0 :(得分:1)
我从
开始if(P.contains(S)){
这是比较两个向量,而不是它们中的各个元素。它有效地说是Vector P中的Vector S - 这是不你想要检查的内容。
你已经隔离了Pnew和Snew--这些是你想要相互比较的两个对象。为了比较它们,您需要有一个规则来指示这两个元素是否实际上是同一个人。简单地说,如果Pnew表示的人的姓名与Snew所代表的人的姓名相同,那么这两者可以被认为是同一个人
答案 1 :(得分:0)
问题是您比较无效对象
if(P.contains(S)){
count = count + 1;
}
可能应该是
if(P.contains(Snew)){
count = count + 1;
}
请注意,您不必遍历两个列表:
public static int histAndMarks(Vector<Patient> patients, Vector<Student> students) {
int count = 0;
for(Patient patient : patients) { //Fetch next patient
if(students.contains(patient) { //Check that students contains patient
count++; //Add one to counter
}
}
return count;
}
请注意,Vetctor
类很老,不常用。您可能想切换到List