2017-11-08 4 views
1

Ich schaue hauptsächlich, wenn "4" unter dem Fall next_choice Aussage. Ich möchte das Schlüssel-Wert-Paar im Inventar-Hash heraussuchen und es dann mit dem sell_inventory-Hash vergleichen. Wenn der Wert des Inventars größer ist als der Wert in sell_inventory, dann subtrahiere die Differenz der beiden vom Inventarwert. Nachdem ich alles getan habe, möchte ich den sell_inventory Hash löschen, so dass, wenn Option 4 erneut ausgewählt wird, ich den Vorgang wiederholen kann. Ich kann mir nicht vorstellen, wie ich das machen soll, da ich ziemlich grün bin, wenn es um Rubin-Hashes geht.Ruby - Vergleiche spezifische Werte in zwei separaten Hashes (Anfänger)

inventory = {} 
sell_inventory = {} 

p "Press enter to continue to program." 
choice = gets.chomp.downcase 

until choice.empty? 
choice = gets.chomp.downcase 
p "That is not a valid choice, please press enter to start." 
end 

while true 
case choice 
    when "" 
     p "1. Show items in inventory" 
     p "2. Add new item to inventory" 
     p "3. Remove item from inventory" 
     p "4. Sell items" 
     p "5. Buy items" 
     next_choice = gets.chomp.downcase 
      case next_choice 
       when "1" 
        p "#{inventory}" 
       when "2" 
         p "What item would you like to store?" 
         item = gets.chomp 
         if inventory.has_key?(item) 
         p "You already have that item in storage." 
        else 
         inventory[item] 
         p "How many of the items would like to store?" 
         amount = gets.chomp.to_i 
         inventory[item] = amount 
         p "Items added to inventory." 
        end 

        when "3" 
         p "What item would you like to remove from inventory?" 
         item_to_remove = gets.chomp.to_i 
         if inventory.include?(item_to_remove) 
         inventory.delete_if {|item, id| item == 
         item_to_remove} 
         else 
         p "That item is not in stock." 
         end 
        when "4" 
         p "What item would you like to sell?" 
         items_to_sell = gets.chomp 
         sell_inventory[items_to_sell] 
         p "How many of that item would you like to sell?" 
         amount_to_sell = gets.chomp.to_i 
         sell_inventory[items_to_sell] = amount_to_sell 
      end 
    when "exit" 
     break 
    end 
end 

Antwort

1

Ich bin nicht sicher, was die sell_inventory Hash ist für. Wenn Sie möchten, dass der Benutzer einfach einen Artikel eingibt und diesen dann vom Inventar abzieht, können Sie dies tun.

Beispiel, sagt Inventar wird wie folgt eingestellt:

inventory = { 'pencil' => 3 } 
items_to_sell = 'pencil' # user entered this 
amount_to_sell = 1 # user entered this 
inventory[items_to_sell] -= amount_to_sell if amount_to_sell <= inventory[items_to_sell] 

Inventar enthält nun einen Bleistift mit einer Menge von 2:

inventory = { 'pencil' => 2 }

In dem obigen Beispiel war es ein Bleistift mit eine Menge von 3. Die Variable items_to_sell wurde auf Bleistift gesetzt (vielleicht über eine Benutzereingabe) und die Variable von "ansage_to_sell" wurde auf 1 gesetzt (wiederum vielleicht über eine Benutzereingabe). Dieser Betrag wird nur dann vom Bestand abgezogen, wenn es sinnvoll ist (die eingegebene Nummer war kleiner oder gleich der aktuell im Bestand befindlichen Menge).

+0

Okay danke, dass Sie das für mich geklärt haben. Ich habe das alles zu kompliziert gemacht. –

+0

Kein Problem! Sie können den Benutzer auch warnen, wenn die eingegebene Menge mehr als im Bestand ist und sie die Menge erneut eingeben. – Trinculo