Ich habe mit dem Lernen von Web Dev in der Vergangenheit geflirtet und hatte nicht die Zeit, da ich ein Vollzeit-Business-Student bin.Mein Programm speichert/zeigt nicht alle Rechnungen, die ich hinzugefügt habe
Ich begann heute wieder zu graben und beschloss, eine Pause vom Lernen zu machen und zu üben, was ich heute gelernt habe, indem ich ein einfaches Programm schrieb, das dem Benutzer erlaubt, ihre Rechnungen einzugeben und schließlich berechnen wird, wie viel verfügbares Einkommen sie haben haben nach ihren Rechnungen jeden Monat bezahlt.
Mein Problem ist, dass das Programm perfekt läuft, die Schleife wird fortgesetzt/beendet, wenn es sollte, aber entweder speichert das Programm nicht die Benutzereingabe im Hash, wie ich es will oder es zeigt nicht alle an Rechnungen eingegeben, wie es sollte. Hier ist mein Programm:
# This program allows you to assign monthly payments
# to their respective bills and will automatically
# calculate how much disposable income you have
# after your bills are paid
# Prompts user to see if they have any bills to enter
puts "Do you have any bills you would like to enter, Yes or No?"
new_bill = gets.chomp.downcase
until new_bill == 'no'
# Creates a hash to store a key/value pair
# of the bill name and the respection payment amount
bills = {}
puts "Enter the bill name: "
bill_name = gets.chomp
puts "How much is this bill?"
pay_amt = gets.chomp
bills[bill_name] = pay_amt
puts "Would you like to add another bill, Yes or No?"
new_bill = gets.chomp.downcase
end
bills.each do |bill_name, pay_amt|
puts "Your #{bill_name} bill is $#{pay_amt}."
end
Meine Fragen sind: Ist mein Hash ordnungsgemäß eingerichtet, die Schlüssel/Wert-Paare aus dem Benutzer-Eingang zu speichern? Wenn nicht, wie kann ich das korrigieren?
Ich bekomme nur die letzte Rechnung, die vom Benutzer eingegeben wurde. Ich habe mehrere Rechnungen gleichzeitig ausprobiert, aber nur den letzten Eintrag bekommen.
Wie ich schon sagte, ich bin ein Noob, aber ich bin sehr ehrgeizig zu lernen. Ich habe auf die Ruby-Dokumentation zu Hashes verwiesen, um zu sehen, ob ein Fehler in meinem Code vorliegt, aber ich konnte eine Lösung finden (finde mich immer noch in der ruby-Dokumentation zurecht).
Jede Hilfe wird geschätzt! Wenn Sie darüber hinaus Empfehlungen dazu haben, wie ich meinen Code effizienter gestalten kann, könnten Sie mich dann in die Richtung weisen, in der ich die entsprechenden Informationen dazu erhalten kann?
Vielen Dank.
Bearbeiten:
Die Hauptfrage wurde beantwortet. Dies ist eine Follow-up-Frage auf das gleiche Programm - ich bin eine Fehlermeldung budget_calculator.rb bekommen: 35: in -': Hash can't be coerced into Float (TypeError) from budget_calculator.rb:35:in
'
Aus dem folgenden Code (beachten das Programms oben) -
# Displays the users bills
bills_hash.each {|key,value| puts "Your #{key} bill is $#{value}."}
# Get users net income
puts "What is your net income?"
net_income = gets.chomp.to_f
#Calculates the disposable income of the user
disposable_income = net_income - bills_hash.each {|value| value}
puts disposable_income
Ich verstehe, dass der Fehler aus dieser Codezeile erscheint: disposable_income = net_income - bills_hash.each {| value | Wert}
Ich verstehe nur nicht, warum das nicht akzeptabel ist. Ich versuche, alle Werte im Hash (pay_amt) vom Nettoeinkommen zu subtrahieren, um das verfügbare Einkommen abzuleiten.
Wenn jemand eine Idee über die Fehlermeldung hat, wurde dieser Teil immer noch nicht beantwortet. –
Ich fand die Antwort auf den zweiten Teil der Frage, indem Sie Enumerable # inject verwenden, um die pay_amt-Werte im Hash zu addieren, und dann die Summe vom Nettoeinkommen subtrahieren. Hier ist die folgende Codelösung: tot_bills = bills_hash.values.inject {| a, b | a + b} –
Willkommen bei Stack Overflow. Bitte erwarten Sie nicht, dass mehrere Fragen auf einer Seite beantwortet werden, es sei denn, sie sind sehr nahe beieinander. Mehrere Fragen sind schwer eindeutig zu beantworten, und anderen fällt es schwer, ähnliche Lösungen zu finden. Denken Sie daran, SO ist ein Nachschlagewerk oder Programmier-Kochbuch für Lösungen für spezifische Probleme. Bitte seien Sie auch sehr kurz, wenn Sie fragen; Programmierung ist kurz und wir mögen die Kürze. "Danke" und "Bearbeiten" sind auch nicht wünschenswert; Wir nehmen an, dass Sie dankbar sind, und "Bearbeiten" oder "Aktualisieren" lenkt nur ab. Setzen Sie den Text an die Stelle, an der er ursprünglich hätte sein sollen. –