Hier ist eine Übungsfrage - Schreiben Sie eine Methode, die einige Minuten in Anspruch nimmt, und gibt eine Zeichenfolge zurück, die die Zahl in hours:minutes
formatiert.Warum funktioniert dieser Ruby-Code nicht?
def time_conversion(minutes)
hours = minutes/60
mins = minutes % 60
time = hours + ":" + mins
return time
end
Die folgenden sind Tests, um zu sehen, ob das funktioniert. Wenn sie wahr zurückgeben, bedeutet dies, dass mein Code korrekt funktioniert.
puts('time_conversion(15) == "0:15": ' + (time_conversion(15) == '0:15').to_s)
puts('time_conversion(150) == "2:30": ' + (time_conversion(150) == '2:30').to_s)
puts('time_conversion(360) == "6:00": ' + (time_conversion(360) == '6:00').to_s)
manchmal bekomme ich gilt für die ersten beiden Tests, aber die dritte Testlinie zeigt falsch, obwohl der Code genau auszudrucken das erforderlich.
anderes Mal bekomme ich folgende Fehlermeldung:
String kann nicht in Fixnum umgewandelt werden (ers): 4: in +' (repl):4:in
time_conversion '(ers): 1: in `initialisieren'
bitte helfen .
Sie können einer Zeichenfolge keine Zahl hinzufügen. Führen Sie 'irb' aus und geben Sie' 5 + 'foo'' ein, und Sie erhalten denselben Fehler. Versuchen Sie 'time = hours.to_s + ':' + mins.to_s' in Ihrer' time_conversion' Funktion. Oder ersetzen Sie einfach den gesamten Funktionsinhalt durch 'return '# {minutes/60}: # {minutes% 60}" ' – lurker
wow. Das hat den Trick gemacht. Ich habe die Hashes nicht benutzt, aber das ist interessant. Ich nehme an, dass ich die Mins- und Stundenvariable entfernen kann – hac13
Ja, Sie könnten diese Variablen entfernen. Sie sollten "Ruby String Formatierung" nachschlagen, wenn Sie führende Nullen in Ihren Minuten haben möchten, wie '6: 05'. Deine 'time_conversion' erstellt nicht' 6: 00'. Es wird '6: 0' erstellt. – lurker