• ベストアンサー

配列を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 よろしくお願いします。

  • boaki
  • お礼率33% (1/3)
  • Ruby
  • 回答数3
  • ありがとう数4

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

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

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

boaki
質問者

お礼

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

その他の回答 (2)

  • notnot
  • ベストアンサー率47% (4846/10257)
回答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% (4846/10257)
回答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

  • RSS::Parserで取り出した要素と文字列の連結

    以下のサンプルを改造し ----------------------------------------------------- ENTRIES = 5 require 'uri' require 'open-uri' require 'rss' uri = URI.parse('http://b.hatena.ne.jp/entrylist?mode=rss&sort=hot&threshold=3') rss = RSS::Parser.parse(uri.read) rss.output_encoding = 'Shift_JIS' bookmarks = [] rss.items.each do |i| bookmarks.push([i.title, i.link]) end puts "■はてなブックマーク 最近の注目エントリ #{ENTRIES}件" puts puts bookmarks[0, ENTRIES].map {|i| i.join("\n") }.join("\n\n") ----------------------------------------------------- rdfファイルを加工するスクリプトを作成してみましたが エラーが出てしまいます。 エラーメッセージ ----------------------------------------------------- rss.rb:27: undefined method `join' for "Sun, 25 Jan 2009 02:51:06 +0900":String (NoMethodError) from rss.rb:26:in `each' from rss.rb:26 ----------------------------------------------------- サンプルを改造したもの ----------------------------------------------------- ENTRIES = 5 require 'uri' require 'open-uri' require 'rss' uri = URI.parse('honyarara.rdf') rss = RSS::Parser.parse(uri.read) rss.output_encoding = 'Shift_JIS' titles = [] links = [] dates = []#空の配列を生成 rssdata = "" rss.items.each do |i| titles.push([i.title])#pushは配列に要素を加えると言う意味 links.push([i.link]) dates.push([i.date]) end puts "\n\n" for i in 0...5 rssdata += dates[i].join("<a href='").join(links[i]).join("'>").join(titles[i]).join("</a>").join("\n") end puts "\n\n" puts rssdata ----------------------------------------------------- ほかに【.join】の部分を【+】にしてみたり 色々試してみましたがうまくいきませんでした。 rdfの要素を取り出しHTML形式で書き出したいのですが 【↓このような形にして変数に格納したい】 ----------------------------------------------------- 2009/10/17<a href="​http://foo.bar.com/article/2">​使い方難しい。</a>\n 2009/10/18<a href="​http://foo.bar.com/article/3">​使い方難しい2。</a> ----------------------------------------------------- rdfの要素と文字列の連結方法がわかりません。 宜しくお願いします。

    • ベストアンサー
    • Ruby
  • 2次元配列のポインタ

    整数型行2列2の2次元配列の[1][0]は、ポインタでは3になるとおもっているのですが、ちがったでしょうか? 下記のソースでエラーが出ていて困っています。 void main() { int array[2][2] = { { 9, 9 }, { 9, 9 } }; int num=2, j,i; *(array + 3) = 0; for (i = 0; i < num; i++) { for (j = 0; j < num; j++) { printf("%d", array[i][j]); } puts(""); } } 99 09 と表示させたいのですが、どこに間違いがあるのでしょうか?

  • 計算の途中経過を表示

    以下のようなプログラムで、素数をカウントダウンする事が出来るのですが、このくらいのサイズだとどうしても次の素数が表示されるまで時間がかかります。 そこで以下のものを修正して、今どの数に取りかかっていて、どの約数(i)で割っているのか常に画面に表示されるようにしたいのです。値が画面で目まぐるしく変わってもかまいません。是非助けてください。 def prime(val) maxv = Math::sqrt(val).truncate (2..maxv).each do |i| return false if val % i == 0 end return true end x = 10**17+1 until x<10**16 until prime(x) x=x-2 end puts x x=x-2 end puts x

    • ベストアンサー
    • Ruby
  • 【ruby】無名関数?でブロック付きメソッドって作れませんか?

    Proc.new do|arg|  arg.each do |x|   puts x  end end.call([1,2,3,4,5]) 上記のようなものを無名関数と理解しているのですが、 これを下記の様にすると、 Proc.new {|arg|  arg.each do |x|   yield(x)  end }.call([1,2,3,4,5]) do |x|  puts x end no block given とエラーになってしまいます。 無名関数で、ブロック付きメソッドって作れないものでしょうか? ご指導の程、宜しくお願いいたします。

    • ベストアンサー
    • Ruby
  • C言語の問題-配列について

    今、独学でC言語をやっているんですが本にのっている問題に解答がなくわかりません。 問題はbunpu[tensu[i] / 10]++;はどういう意味を表すかです。 do-while分の繰り返しがおわった後にbumpuに++があるので+1をすればいいのでしょうか?よくわかりません・・・ 学生10人の点数の分布を10点ごとに分布グラフとして表示します。 #include <stdio.h> #define NUMBER 80 int main (void) { int i,j,num; int tensu[NUMBER]; int bunpu[11] = {0}; puts("点数を入力してください"); for("i =0; i < num; i++"){ printf("%2d番",i + 1); do{ scanf("%d",&tensu[i]); if(tensu[i] < 0 || tensu[i] > 100) printf("0以上100以下"); }while (tensu[i] < 0 || tensu[i] > 100); bunpu[tensu[i] / 10]++; } puts("\n 分布ぐらふ "); printf(" 100:"); for (j = 0;j < bumpu[10];j++) putchar('*') putchar('\n') for(i = 9; i>=0; i--) { printf("%3d - %3d:",i*10,i*10+9); for (j=0; j< bunpu[i];j++) putchar('*'); putchar('\n'); } return(o); }

  • 改行させずに文字配列を出力させる関数

    改行させずに文字配列を出力させる関数は、printf以外にありますか? printf("Hello world!!"); //改行せずに出力 char str[]="Hello world!!"; puts(str); //改行されて出力 出力の最後に自動的に改行文字を追加しないで、文字配列を表示する標準関数って、printf以外にありますか? もしくは、改行されない関数が必要な場合は自作するしかありませんか?

  • Fortran90/95の出力方法について

    Fortran90/95の出力方法について Fortran95において,変数の値をwrite文で出力した後に改行しない方法を教えてください. 具体的には次のProgram reiを用いて質問します. program rei implicit none integer i, n read(*,*) n do i = 1, n write(*,*) i end do end このプログラムを実行させnに3を代入すると次のように表示されます. 1 2 3 しかし,私としては次のように改行せずに表示させたいのです. 1 2 3 また,諸事情により配列は使用しません. プログラムをどのように改良すればよいのでしょうか.教えてください.

  • ruby テキストファイル書き出しでの文字化け

    ruby&mac&文字の扱い 初心者です。 mac os 10.6.8 HTMLの情報を読み込みテキストファイルに書き出したいのですが、 ターミナル上、putsではきちんと日本語で表示されるのですが、書き出したあとの txtファイルを開くと文字化けしています。 File.open("test.txt","w") do |file| @s_info.each do |data| puts data[:m_sec] file.puts data[:m_sec] end end よろしくお願いします。

    • ベストアンサー
    • Ruby
  • ブロック2 Ruby認定試験対策問題

    Ruby認定試験対策問題をやっていたら、また分からないところがあったので、教えてください。 2.9-3.ブロック ■問題 次の式を実行した場合,正しい出力結果はどれか. ['foo'].each do |i| ['bar'].each do |i| print i end print i end ■回答 barbar ■解説 ブロックには変数をシャドーウィングする機能がないため ■疑問 ・barfooだと思ったのですが、どうして、正答はbarbarになるのでしょうか。 ・「変数をシャドーウィングする機能」ってどういう機能ですか?

    • ベストアンサー
    • Ruby
  • C言語のif文について(初歩の初歩の初歩)

    if(num % 2) とするときnumが2で割り切れ「ない」とき つまり()内が「偽」であるときputsの文が表示されます。 if(num == 0) とするときnumが0のとき つまり()内が「真」であるときputsの文が表示されます。 ()内が非0になるか0になるかというのはわかるのですが 「真」か「偽」かでみると逆になってしまってわかりにくいので 常に if(num != 0) として0じゃ「ない」とき つまり()内が「偽」であるときputsの文を表示させれば 常に()内が「偽」のとき表示されるのでわかりやすいと思ったのですが この先これでやっていくとうまく行かないことが出てきますでしょうか。 簡単なうちに慣れていますべきでしょうか。 それともこのようにやっても問題ないのでしょうか。 皆様はどのようにしているのか教えてください。 よろしくおねがいします。

専門家に質問してみよう