【发布时间】:2017-06-26 11:56:58
【问题描述】:
我正在尝试使用两个不同的人阅读过的两个书籍列表并进行比较。如果第一个列表中的一本书(这是一个由字符串标题和字符串作者组成的构造函数)等于另一个列表中的一本书,那么我将它添加到 commonBooks 列表中。这是我到目前为止得到的,但我不断收到这个建议:“添加返回语句”或“更改为 void”
这是我目前所拥有的:
public static ArrayList<Book> commonBooks(Person a, Person b) {
ArrayList<Book> personA = a.getRead();
ArrayList<Book> personB = b.getRead();
ArrayList<Book> sameBooks = new ArrayList<Book>();
if (personA.size() < personB.size()) {
for (int i = 0; i < personA.size(); i++) {
Book ndx = personA.get(i);
if (personB.contains(ndx)) {
sameBooks.add(ndx);
} else if (personB.size() < personA.size()) {
for (int i1 = 0; i1 < personB.size(); i1++) {
Book ndx1 = personB.get(i1);
if (personB.contains(ndx1)) {
sameBooks.add(ndx1);
} else if (personB.size() < personA.size()) {
for (int i2 = 0; i1 < personB.size(); i2++) {
Book ndx2 = personB.get(i2);
if (personB.contains(ndx2)) {
sameBooks.add(ndx2);
}
}
} else {
return sameBooks;
}
}
}
}
} else {
return sameBooks;
}
}
【问题讨论】:
-
程序中的每个条件都需要返回一个值。否则,您最终需要在条件块之外返回一个。这只是确保无论满足条件如何都始终返回值的一种方式。这适用于期望返回值的方法。或者按照编译器的建议删除所有返回语句并将方法标记为 void :)