为什么我总是得到“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
和 患者
应该是单数,因为它们仅代表集合 S
和 P
中的一个元素。
根据你所说的你想做的事情,你应该将循环替换为:
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/