2017-11-24 40 views
-3

사용자가 원하는만큼의 항목으로이 해시를 업데이트해야합니다. 그리고 그것을 업데이트하는 데 문제가 있습니다. 사용자의 마지막 입력 만 표시합니다.왜 내가 루비에서 해시를 업데이트 할 수 없습니까?

예를 들어 i = 2에서 해시는 두 번째 키와 값이 추가 된 것을 보여줄 뿐이며 둘 다 원합니다. 또는 i = 3 인 경우 3 개의 입력이 모두 필요합니다.

puts "how may items to add in hash?" 

i=gets.chomp.to_i 
for i in 1..i 
      puts "add key" 
      key = gets.chomp     
      puts "add value" 
      value = gets.chomp.to_f.round(2) 

      project = Hash.new() 
      project = {key => value} 

      project.each do |key, value| 
      puts "#{key} \t - \t #{value}%" 
      end 
end 

도움이 될만한 사람이 있습니까?

답변

1

루프의 변수 초기화를 이동하십시오. 지금은 각 반복마다 빈 해시로 프로젝트를 다시 작성합니다. 그래서 마지막 항목 만 저장합니다. 여기 가능한 코드는 다음과 같습니다

puts "how may items to add in hash?" 

project = {} 
i=gets.chomp.to_i 

for i in 1..i 
    puts "add key" 
    key = gets.chomp     
    puts "add value" 
    value = gets.chomp.to_f.round(2) 

    project[key] = value 
end 

project.each do |key, value| 
    puts "#{key} \t - \t #{value}%" 
end 

project.values.inject(&:+) 

추신 :

+0

가의 verry 감사합니다 {} (https://github.com/bbatsov/ruby-style-guide#literal-array-hash) Hash.new()을 통해 선호! –

+0

이것은 작동하지 않습니다. –

+0

@JagdeepSingh 왜? – AntonTkachov

관련 문제