Ruby on Railsを先週から勉強はじめました。
以下のコードでわからないとこがあるので教えて下さい...。宜しくお願いします。
①『item.csv』というcvsデータを読み込む。
→csvデータの中には【商品コード】【商品名】【金額】が書いている。
※csvデータ A1,たい焼き,500 A2,たこ焼き,300 A3,やきとり,100 B1,ビール,600 B2,焼きそば,300
②コマンドライン引数で、【商品コード】とマッチしていれば、以下のように表示する。
※実行結果【理想】 ruby Cart.rb A1 A2 A5 B2 → 【商品コード】A1【商品名】たい焼き【金額】500円 【商品コード】A2【商品名】たこ焼き【金額】300円 商品がありません。 【商品コード】B2【商品名】ビール【金額】600円
とコマンドライン引数の要素を一つづつ判別して、trueかfalseか調べたいのですが、実行すると、
※実行結果【現実】 ruby Cart.rb A1 A5 → [商品コード] A1 [商品名] たい焼き [金額] 500円 商品がありません。 商品がありません。 商品がありません。 商品がありません。 商品がありません。 商品がありません。 商品がありません。 商品がありません。 商品がありません。
と表示されてしまいます。readFileの中でループ処理を2回しているのが原因だと思うんですが、
その解決がわからないので、もしわかればおしえていただきたいです。
宜しくお願いします。
ITEM = "item.csv" class Cart def initialize(code,name,value) @code = code @name = name @value = value end def toString return "[商品コード] #{@code} [商品名] #{@name} [金額] #{@value}円" end end def readFile goods = File.read(ITEM) goods.each_line do |line| good = line.split(",") cart = Cart.new(good[0],good[1],good[2]) for i in 0..ARGV.length hash = {good[0] => cart.toString()} if ARGV[i] == good[0] puts hash[ARGV[i]] else puts "商品がありません。" end end end end def exec readFile() end exec()
コードが読みにくいかもしれませんが、よろしくお願いします。
回答3件
あなたの回答
tips
プレビュー