Ich versuche, zwei Listen von Büchern zu verwenden, die zwei verschiedene Leute gelesen und verglichen haben. Wenn das a Book (das ist ein Konstruktor, der aus einem String-Titel und einem String-Autor besteht) in der ersten Liste gleich einem der Bücher in der anderen Liste ist, füge ich es zu einer commonBooks-Liste hinzu. Dies ist, was ich so weit gekommen, aber ich halte diesen Vorschlag bekommen: „return-Anweisung hinzufügen“ oder „Änderung ungültig“Java 8 ArrayList Gleichheit
hier ist, was ich bisher:
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;
}
}
Jeder Zustand in Ihrem Programm einen Wert zurückgeben muß. Andernfalls müssen Sie am Ende einen außerhalb der bedingten Blöcke zurückgeben. Dies ist nur eine Möglichkeit sicherzustellen, dass ein Wert unabhängig von der erfüllten Bedingung immer zurückgegeben wird. Dies gilt für eine Methode, die erwartet, dass ein Wert zurückgegeben wird. Oder entfernen Sie alle return-Anweisungen und markieren Sie die Methode als void, wie vom Compiler vorgeschlagen :) – Prathap