比较java中的两个向量?
我想比较这两个向量,这样它会返回多少患者也是学生。我得到了main,并添加了HistAndMarks方法,但它似乎不起作用。主要的困惑在于HistAndMarks方法以及我将如何比较两个向量 谢谢比较java中的两个向量?,java,vector,Java,Vector,我想比较这两个向量,这样它会返回多少患者也是学生。我得到了main,并添加了HistAndMarks方法,但它似乎不起作用。主要的困惑在于HistAndMarks方法以及我将如何比较两个向量 谢谢 import java.util.*; public class Ex6 { public static int count = 0; public static void main(String[] a) { Vector<Patient>
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;
}
}
import java.util.*;
公共类Ex6{
公共静态整数计数=0;
公共静态void main(字符串[]a)
{
向量P=新向量();
向量S=新向量();
int i=Integer.parseInt(a[0]);
如果(i==0){
P.add(新患者(“Jimmy1”、“1”、“d”);
P.add(新患者(“Jimmy2”、“1”、“d”));
P.add(新患者(“Jimmy3”、“1”、“d”);
P.add(新患者(“吉米”、“1”、“d”));
S.add(新学生(“Jimmy1”,“1”,空));
S.add(新学生(“Jimmy2”,“1”,空));
S.add(新学生(“Jimmy3”,“1”,空));
S.add(新学生(“Lisa”,“1”,空));
System.out.println(新的Ex6().HistAndMarks(P,S));
}
如果(i==1){
P.add(新患者(“吉米”、“1”、“d”));
S.add(新学生(“Jimmy1”,“1”,空));
System.out.println(新的Ex6().HistAndMarks(P,S));
}
if(i==2)System.out.println(new Ex6().HistAndMarks(P,null));
}
公共静态int HistAndMarks(向量P,向量S){
对于(int i=0;i>P.size();i++){
对于(intz=-1;z>S.size();z++){
患者Pnew=P.get(i);
学生Snew=S.get(z+1);
如果(第页包含){
计数=计数+1;
}
}
}
返回计数;
}
}
问题是您比较了无效对象
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;
}
public static int histAndMarks(病媒患者、病媒学生){
整数计数=0;
对于(患者:患者){//取下一个患者
如果(students.contains(patient){//检查学生是否包含patient
count++;//向计数器添加一个
}
}
返回计数;
}
请注意,
vector
类非常古老,不常用。您可能想切换到我首先看一下
if(P.contains(S)){
这是比较两个向量,而不是其中的单个元素。它实际上是说向量p中的向量s-这是而不是您想要检查的内容
您已经隔离了Pnew和Snew-这两个对象是您想要相互比较的两个对象。为了比较它们,您需要有一个规则来指示这两个元素是否实际上是同一个人。简单地说,如果Pnew所代表的人的名字与Snew所代表的人的名字相同,这可能是错误的epresents,则这两个人可以被视为同一个人remove>from for loop..使其成为请将您的方法重命名为
histAndMarks
。根据您想要识别的基础,患者是否是学生…使用他们的姓名或其他内容来扩展@Maroun的注释,使用方法名称为“动词,大小写混合,第一个字母小写,每个内部单词的第一个字母大写”。当您执行P.contains(S)
时,S
是整个向量。您可能的意思是P.contains(Snew)
。另外,要意识到这将使用equals()
进行比较-你需要确保你的对象比较正确。是的,这就是我想要做的,你说的最后一部分很准确,我只是不知道如何将它实现到我的代码中。如果没有看到Patient和Student类,我就不知道该怎么说,但是类似于“if Pnew.getName().equals(Snew.getName())这可能是你想要的。