前提・実現したいこと
以下のテキストファイルから品名と価格だけを表示したい
品名 分類コード 商品コード 価格
"モコモコスパゲッティ" 1 16565M 880
"suidou ざ・movie" 5 54110S 3980
"無邪気白熊" 7 74096M 240
"ウィリーCUB" 3 R345 180000
"恋愛大皿左巻き" 2 25924R 54000
(suidouのやつは空白が入っているので""でまとめてやりたいです)
発生している問題・エラーメッセージ
品名と価格の文字は出てくるが、数字が出てこない。
該当のソースコード
Ruby
1require './kprintf.rb' 2 3hinmei=[] 4kakaku=[] 5sum=0 6while kaimono = gets 7 if /^(\s+)\s+(\d+)\s+(\d+)$/ =~ kaimono then 8 hinmei << $1 9 kakaku << $2.to_i 10 end 11end 12i = 0 13print "--品名-----------+-価格--\n" 14while i < kakaku.length 15 printf("%-20s %5d %5.1f \n",himnei[i], kakaku[1]) 16end
削除するべきとは書きましたが、数字の調整をするべき、とは書いていません。
削除前のコードが正しいのならば、kakaku << $4.to_i のままが正解です。
また、わざわざ指摘しているのだから、ケアレスミスの有無くらい、確認してください。
i(アイ)と1(イチ)は異なるし、変数は勝手に更新されません。
https://teratail.com/questions/272569
open("result.txt", "w")do |kaimono|
hinmei=[]
kakaku=[]
sum=0
while kaimono = gets
if /\"([^\"]+)\"\s+(\d+)\s+([^\s]+)\s+(\d+)/ =~ kaimono then
hinmei << $1
kakaku << $4.to_i
end
end
i = 0
print "--品名--------------+-価格--\n"
while i < kakaku.length
printf("%-20s %5d \n",hinmei[i], kakaku[i])
i+= 1
end
while
f < kakaku.sum
printf("合計金額は%d円です\n",f)
f+= 1
end
end
このようになったのですが、合計金額が連続で出てきてしまいます。どうすればいいですか?
回答1件
あなたの回答
tips
プレビュー