比较java中的两个向量?

wtzytmuj  于 2021-07-09  发布在  Java
关注(0)|答案(2)|浏览(308)

我想比较这两个向量,这样它就会返回多少病人也是学生。我得到了main,我已经添加到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;
    }
}
inkz8wg9

inkz8wg91#

我先看看

if(P.contains(S)){

这是比较两个向量,而不是其中的单个元素。它实际上是说向量p中的向量s,这不是你想要检查的。
您已经隔离了pnew和snew-这是两个您想要相互比较的对象。为了比较它们,您需要有一个规则来指示这两个元素是否实际上是同一个人。简单地说,如果pnew所代表的人的名字与snew所代表的人的名字相同,那么这两个人可以被认为是同一个人

bq3bfh9z

bq3bfh9z2#

问题是比较无效对象

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 类非常古老,不常用。您可能需要切换到列表

相关问题