Ich habe ein Skript gestartet, aber eine Fehlermeldung erhalten. Ich habe normalerweise die richtige Idee, aber falsche Syntax oder Formatierung.Convert Integer zu Octal mit Klasse Integer und mehrere Methoden
Hier sind die genauen Anweisungen:
Erweitern Sie die Integer-Klasse, indem Sie eine Methode namens to_oct hinzufügen, die eine Zeichenfolge zurückgibt, die die Ganzzahl in Oktal darstellt. Wir werden den Algorithmus in der Klasse diskutieren. Fragen Sie den Benutzer nach einer Zahl und geben Sie die von to_oct zurückgegebene Oktalzeichenfolge aus.
Fügen Sie Ihrer Integer-Erweiterung "to_base" eine weitere Methode hinzu. Diese Methode sollte einen Parameter annehmen, der die Basis angibt, in die die Zahl konvertiert werden soll. Um beispielsweise die Zahl 5 in eine binäre Zahl zu konvertieren, würde ich 5.to_base (2) aufrufen. Dies würde "101" zurückgeben. Angenommen, der Eingabeparameter für to_base ist eine Ganzzahl kleiner als 10. to_base sollte eine Zeichenfolge zurückgeben, die die Dezimalzahl in der Basis der angeforderten Zahl darstellt.
#!/usr/bin/ruby
class Integer
def to_base(b)
string=""
while n > 0
string=(n%b)+string
n = n/b
end
end
def to_oct
n.to_base(8)
end
end
puts "Enter a number: "
n=gets.chomp
puts n.to_base(2)
Als ich das Skript ausführen ich tun, um die eine Reihe Aufforderung eingeben, aber dann bekomme ich diese Fehlermeldung:
tryagain.rb:16:in `<main>': undefined method `to_base' for "5":String (NoMethodError)
Ist es verboten, [Fixnum # to_s] (http://ruby-doc.org//core-2.3.0/Fixnum.html#method-i-to_s) zu verwenden? Wenn nicht, ist das der richtige Weg. Ihre vorletzte Zeile sollte 'n = gets.to_i' sein (oder' n = gets.chomp.to_i'). Ich werde Ihren Code für Sie neu formatieren. –
Es gab keine zusätzlichen Einschränkungen –