• ベストアンサー

配列をputsで表示させる順番

お尋ねします。 2016/01/04, 11, 101 2016/01/05, 12, 102 2016/01/06, 13, 103 と表示させようと思い下記を作ってみましたが、どうしても 2016/01/04, 2016/01/05, 2016/01/04, 11, 12, 13, 101, 102, 103 となってしまいます。(出力の順番と改行の問題)どのようにすればよいでしょうか? [0..2].each do |i| puts [stock.dates[i], stock.num1[i], stock.num2[i]].join(", ") end よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.3

すいません。思い込みでちゃんとコードを見てませんでした。お恥ずかしい。 (0..2).each do |i| ~ end ですね。

boaki
質問者

お礼

あー、そこでしたか・・・私の方こそお恥ずかしい。 []と()と{}の使い分け、初心者には大変です。 お蔭さまで最初の並びと改行の問題は解決しました。 ありがとうございました。

その他の回答 (2)

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.2

ちょっとあり得ない現象ですね。 # encoding: Windows-31J require "./text_to_stock" [0..2].each do |i| puts i end で3行になりますか?1行ですか?

boaki
質問者

補足

ありがとうございます。 0 1 2 きっとこれが期待する出力ですよね?なのに、こうなりました。 0..2 何か基本的にヘンですね、初心者の私でも思います。putsをpにしても同じ結果です。 puts "#{i} uuu"でも、こうなるだけです。 0..2 uuu やっぱあり得ませんよね!!?なんだろ・・・

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.1

書かれている部部だけ見て、書かれていない部分を想像してみると、おかしく無さそうです。 ただ、putsを3回実行して出力が1行と言うことはあり得ないので、あなたに何かの勘違いがあるんだろうと思います。コードを全部省略せずに載せてください。

boaki
質問者

補足

# encoding: Windows-31J require "./text_to_stock" tts = TextToStock.new(stock_list: "list.txt", section: "") stock = tts.generate_stock(8002) [0..2].each do |i|  puts [stock.dates[i], stock.open_prices[i], stock.close_prices[i]].join(", ") end 前半を含めてrb全体を記載しますが、putsの部分は変数名を変更しただけで省略はしてません。 画面(console)だけの問題かと思い下記でテキストファイルに落としてみましたが結果は同じ改行無しの横1行でした。 File.open("./result.txt", "w") do |file|  [0..2].each do |i|   file.puts [stock.dates[i], stock.open_prices[i], stock.close_prices[i]].join(", ")  end end 何かお分かりになることありますでしょうか?

関連するQ&A