📅  最后修改于: 2023-12-03 15:26:03.821000             🧑  作者: Mango
以下哪个断言对于以下程序中给定的教授 P
是正确的?
class Professor {
private String name;
private String subject;
public Professor(String n, String s) {
name = n;
subject = s;
}
public String getName() { return name; }
public String getSubject() { return subject; }
}
class Institute {
int instituteID;
String instituteName;
List<Professor> professors;
Institute(int instituteID, String instituteName, List<Professor> professors) {
this.instituteID = instituteID;
this.instituteName = instituteName;
this.professors = professors;
}
public List<Professor> getProfessors(String subject) {
List<Professor> result = new ArrayList<>();
for(Professor p : professors) {
if(p.getSubject().equals(subject))
result.add(p);
}
return result;
}
}
Institute ins = new Institute(1, "IIT");
List<Professor> list = ins.getProfessors("CSE");
assert(list.size() == 2);
Institute ins = new Institute(1, "IIT");
List<Professor> list = ins.getProfessors("ECE");
assert(list.size() == 0);
Institute ins = new Institute(1, "IIT");
List<Professor> list = ins.getProfessors(null);
assert(list.size() == 0);
Institute ins = new Institute(1, "IIT");
List<Professor> list = ins.getProfessors();
assert(list.size() == 0);
选项 (A) 和 (B) 是正确的。因为在此程序中,一个实验室(表示为一个 Institute
)由许多教授(表示为 Professor
)组成,每个教授都有一个“subject”属 性,表示他/她的专业。因此,当需要获取一个实验室中所有与特定学科相关的教授时,需要使用 getProfessors(String subject)
方法。这个方法接受一个 subject 参数并返回所有与此 subject 相关联的教授的列表。如果没有这样的教授,则返回空列表。
在选项 (A) 中,我们创建了一个名为 ins 的 Institute
对象,然后使用 getProfessors()
方法获取所有带有“subject”属性为“CSE”的教授,然后断言返回的列表应该包括两个元素。
同样,在选项 (B)中,我们创建了一个名为 ins
的 Institute
对象,并使用 getProfessors()
方法获取所有subject
属性为“ECE”的教授,断言返回的列表应该是空。
选项 (C) 和 (D) 都不正确,因为 getProfessors()
方法需要一个参数,即 subject。如果传递 null,会导致空指针异常。这在选项 (C) 中会发生,并且在选项 (D) 中,则无法调用此方法,因为没有提供 subject 参数。 因此,我们可以排除选项 (C) 和 (D)。