Ich habe vor kurzem angefangen, Ruby zu lernen, aus einem Hintergrund in Python kommen. Dies ist eines meiner ersten Programme über ein paar Zeilen Länge, und ich habe irgendwo in der Syntax einen Fehler gemacht, den ich nicht abfangen kann, was dazu führt, dass das Programm mit dem Fehler "unerwartetes Ende der Ausgabe, erwartetes Schlüsselwort_end" fehlschlägt.Keine Ausgabe von Ruby-Programm
Hier ist der Code, vielen Dank für jede Hilfe! Es ist ein Programm, das Zahlen von Ziffernform in Englisch umwandelt.
def toEnglish number
if number < 0
return 'Please try again, negative numbers are not allowed'
end
if number == 0
return 'Zero'
end
if number > 0
numEnglish = ''
left = number.to_s.size
ones = ['one', 'two', 'three', 'four', 'five', 'six', 'seven',
'eight', 'nine']
tens = ['ten', 'twenty', 'thirty', 'forty', 'fifty', 'sixty',
'seventy', 'eighty', 'ninety']
teens = ['eleven', 'twelve', 'thirteen', 'fourteen', 'fifteen',
'sixteen', 'seventeen', 'eighteen', 'nineteen']
while left.to_i > 0
firstDigit = number.to_s[0].to_i
secondDigit = number.to_s[1].to_i
sum = (firstDigit.to_i * 10) + secondDigit.to_i
if secondDigit != 0
if sum < 20 and sum > 10
numEnglish << teens[sum.to_i - 11] +
'hundred'
elsif (sum % 10) == 0
numEnglish << tens[(sum.to_i/10)].to_s +
'hundred'
else
numEnglish << tens[(firstDigit.to_i/
10) - 1] + ones[secondDigit - 1]
end
end
numEnglish << ones[firstDigit.to_i - 1]
numberRev = number.to_s.reverse
number = (numberRev.to_i/100).to_s.reverse
end
if left == 0
return numEnglish
end
end
end
puts toEnglish(54)
puts toEnglish(447)
Im Moment wird der Code ohne Fehler, aber ich bin mit einem blinkenden Cursor wie links ich aus dem gets
Verfahren erhalten würde.
Was ist der Fehler, den Sie erhalten und auf welche Zeile (n) verwiesen wird? –
Es ist normalerweise besser, große, unveränderliche Arrays wie "Einsen", "Zehner" und "Teenager" als Konstanten außerhalb Ihrer Methode zu deklarieren. Zum Beispiel: "ONES", "TENS" und "TEENS" mit den gleichen Definitionen. Sie können auch Unterstützung für negative Werte hinzufügen wie: 'return 'negative' + toNumber (-number)'. Es sollte hier erwähnt werden, dass Methodennamen wie 'to_number' sein sollten, um den Ruby-Codierungskonventionen zu folgen. – tadman
Willkommen bei Ruby. Seien Sie sich bewusst, dass Sie Ruby-Code wie Python schreiben, der in einer Teameinstellung nie gut läuft oder wenn Sie Ihren Code teilen möchten. Es gibt Ruby Style Guides, die Ihnen helfen werden, Ihren Code in eine Linie zu bringen. –