私は2人の異なる人が読んで比較した2冊の本のリストを使用しようとしています。最初のリストのブック(String titleとString authorで構成されたコンストラクタ)が他のリストのブックの1つと等しい場合、commonBooksリストに追加します。これは私がこれまでに得たものであるが、私はこの提案を得続ける:Java 8 ArrayListの等価性
「を無効にするための変更」または「return文を追加し、」ここで私がこれまで持っているものです:あなたの方法の
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;
}
}
あなたのプログラム内のすべての条件が値を返す必要があります。そうでなければ、条件ブロックの外側にあるものを最後に返す必要があります。これは、条件を満たすかどうかにかかわらず常に値が返されるようにする単なる方法です。これは、値が返されることを期待するメソッドに適用されます。または、すべてのreturn文を削除し、コンパイラが提案するようにメソッドをvoidとしてマークしてください:) – Prathap