@Zasam: Der Code macht so keinen Sinn. Entweder der Argumentname `anyString` stimmt, dann ist der Indexzugriff auf das erste Element von `e` unsinnig, denn dann ist das wieder `e` oder der Name `anyString` ist falsch und sollte eigentlich `strings` heissen, wo dann wie die Beschreibung in Deinem Beitrag nahelegt, alle Zeichenketten aus `strings` die mit 'U' anfangen, gezählt werden. Dann verstehe ich aber die Frage nicht, denn das unterscheidet sich eigentlich nicht wirklich von Java.
Wobei ich auch in dem Fall nicht per Index zugreifen würde sondern die `startswith()`-Methode auf Zeichenketten verwenden würde, denn sonst bekommt man ein Problem wenn `strings` auch leere Zeichenketten enthalten kann → `IndexError`.
Zudem ist das, egal in welchem Fall, etwas umständlich ausgedrückt. 'U's in einer Zeichenkette zählen: ``string.count('U')``. Und bei einem iterierbaren Objekt das Zeichenketten liefert, zählen wieviele davon mit 'U' anfangen: ``sum(s.startswith('U') for s in strings)``.
Edit: Also in Java ausgedrückt ist die Frage ob Du das hier meintest:
Code: Alles auswählen
public static int measureU(String string) {
int result = 0;
for (char c : string.toCharArray()) {
if (c == 'U') {
result++;
}
}
return result;
}
Oder das hier:
[codebox=java5 file=Unbenannt.java] public static int measureU(Iterable<String> strings) {
int result = 0;
for (String string : strings) {
if (string.startsWith("U")) {
result++;
}
}
return result;
}[/code]
bzw.
[codebox=java5 file=Unbenannt.java] public static int measureU(Iterable<String> strings) {
return StreamSupport.stream(strings.spliterator(), false)
.mapToInt(s -> s.startsWith("U") ? 1 : 0)
.sum();
}[/code]