[英]Compare two vectors in java?
我想比較這兩個向量,以便返回有多少患者也是學生。 給我主要的東西,我已經添加了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;
}
}
我先來看
if(P.contains(S)){
這是在比較兩個向量,而不是其中的各個元素。 實際上是說向量P中的向量S-這不是您要檢查的內容。
您已經隔離了Pnew和Snew-這是您要相互比較的兩個對象。 為了比較它們,您需要有一個規則來指示兩個元素是否實際上是同一個人。 簡而言之,如果Pnew所代表的人的名字與Snew所代表的人的名字相同,那么這可以被認為是同一個人
問題是您比較無效的對象
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
類非常老,不常用。 您可能要切換到列表
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.