java - vector/泛型搜索 java

标签 java generics vector

为什么我总是得到“0”作为答案,我做错了什么吗?

我怀疑该错误与 HistAndMarks 方法有关。我想做的是搜索两个 vector 并计算两个 vector 中有多少个名字。

谢谢

public class Ex6 {

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) {
    int count = 0;
    try {
        for (Student students : S) {
            for (Patient patients : P) {
                if (S.contains(P)) {
                    count++;
                }

            }
        }
    } catch (NullPointerException e) {
        System.out.println("Error");
        System.exit(0);
        return 0;
    }
    return count;
}
}

最佳答案

在这里,您正在迭代集合,但不使用迭代的元素。

for (Student students : S) {
    for (Patient patients : P) {
        if (S.contains(P)) {
            count++;
        }
    }
}

students患者 应该是单数,因为它们仅代表集合 SP 中的一个元素。

根据你所说的你想做的事情,你应该将循环替换为:

for (Student student : S) {
    for (Patient patient : P) {
        if (student.getName().equals(patient.getName())) {
            count++;
        }
    }
}
<小时/>

更新:

这种for循环称为“增强型for循环”。这只是编写一个循环来迭代集合的更简单的方法。

for (Student student : S) {
    // some code using the variable 'student'
}

与您所写的完全相同:

Iterator<Student> it = S.iterator();
while (it.hasNext()) {
    Student student = it.next();
    // some code using the variable 'student'
}

使用数组更容易理解。如果 String[] tab; 在某处声明:

for (String s : tab) {
    System.out.println(s);
}

相当于:

for (int i = 0; i < tab.length; i++) {
    System.out.println(tab[i]);
}

关于java - vector/泛型搜索 java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23096628/

相关文章:

java - 无法使用发布 apk 中的 Firebase Auth 登录(无 Google Play)

c# - 我们可以在代码契约中对泛型类型强制为 nullability 吗?

c# - 为什么编译器不能为我推断类型? (又名 Smarter SmartEnumerable)

c++,从文件读取到结构,然后读取到 vector (结构被插入 vector 太多次而不是一次)

具有自定义比较功能的 C++ 优先级队列在 Push() 上的行为不正确

java - HomeFragment 无法转换为 Fragment

java - 一种将共享资源分配给多个节点中的一个节点的分布式算法

.net - F#:跨度、升高和底部类型(或缺少)

c++ - 带有 vector 的重载流插入运算符

java - 从 Java 代码执行 Jar