Ich habe Probleme mit der Kompilierung, die ich nicht verstehe und würde einige Hilfe zu schätzen wissen. Auszug aus dem Code, sind andere Verfahren zur Kürze weggelassen:Collections.sort mit Comparator <String[]> kompilieren Fehler
public class TableBuilder {
List<String[]> rows = new LinkedList<String[]>();
public void sortByColumn(final int colIndex) {
int maxIdx = 0;
for (String[] s : rows) maxIdx = Math.max(maxIdx, s.length - 1);
if (colIndex < 0 || colIndex >= maxIdx) return
Collections.sort(rows, new Comparator<String[]>() {
@Override
public int compare(String[] strings, String[] otherStrings) {
return strings[colIndex].compareTo(otherStrings[colIndex]);
}
});
}
}
Fehler, die ich erhalte ist:
cannot return a value from method whose result type is void
Collections.sort(rows ,new Comparator<String[]>() {
^
Wenn ich Methodensignatur public int sortByColumn(final int colIndex)
ändern dann ich Störung erhalte :
incompatible types
found : void
required: int
Collections.sort(rows, new Comparator<String[]>() {
^
Warum dieser Code nicht kompiliert e und wie ist return
in anonymous Comparator
Klasse im Zusammenhang mit sortByColumn
Signatur? Ist es möglicherweise Compiler Bug oder was mache ich falsch? Verwenden von javac 1.6.0_45.
Typo: 'if (colIndex <0 || colIndex> = maxIdx) return'. Fügen Sie ';' ein, um die Anweisung abzuschließen. Überprüfen Sie immer Ihren gesamten Code, nicht nur die vom Compiler hervorgehobene Zeile. – BackSlash
Und immer Klammern um Ihre if/while/für Blöcke verwenden. Noch ein Fehler, der einfacher zu diagnostizieren wäre, wenn Sie geschweifte Klammern verwendet hätten. –
Dies ist ein Tippfehler, ich glaube, das könnte knapp sein. – AxelH