Nach herumspielen mit den ganzen Morgen (ich bin noch neu zu diesem Thema), habe ich beschlossen, die Experten zu fragen.mit der case-Anweisung, um einen Index zu finden und es
Dies ist die Suche:
Sie werden ein Wort gegeben werden. Ihre Aufgabe ist es, das mittlere Zeichen des Wortes zurückzugeben. Wenn die Länge des Wortes ungerade ist, geben Sie das mittlere Zeichen zurück. Wenn die Länge des Wortes gerade ist, geben Sie die mittleren 2 Zeichen zurück. Diese
ist das, was ich bisher:
def median(string)
array = string.split(//)
case array
when array.length == 1
return array[0]
when array.length == 2
return array[0] + array[1]
when array.length.odd? && array.length >= 3
return array[(array.length - 1)/2]
when array.length.even? && array.length >= 4
return array[((array.length/2) - 1)] + array[(array.length/2)]
else nil
end
end
puts median("testing")
was mit meinem Code ist falsch. Es läuft, liefert aber nichts. Jede Hilfe wird sehr geschätzt.
Das Problem ist, Ihre (Fehl-) Nutzung von Fall/bei. Verwenden Sie stattdessen/elsif. Und lesen Sie, wo und für welchen Fall/wann _should_ verwendet werden sollte. –
Ihre Case-Anweisung sollte 'case array.length' sein und die when-Anweisungen sollten' when 1' sein. –
@TallPaul: Wie schlagen Sie vor, die letzten beiden Fälle dann zu behandeln? –