Hatena::ブログ(Diary)

tricky froggy but happy

2009-08-23

[][][][][][](マジで)ゼロからRubyする編  〜gets.to_i〜

前回の疑問が解決した。

------------------------------------------------------------

#{} の中に変数を書いておくと、その変数の中身が文字列として埋め込まれる。

これを文字列としてはなく、integerとして認識させるにはどうしたらいいんだろうか?

------------------------------------------------------------

というとこだったんだけど、正確には、

string(文字列)を、integer(整数)に変換する。


そこで、to_i ですよ!ヽ(≧▽≦)ノ

  a=10
  b=20
  puts "#{a+b}" 

とした場合の実行結果は 30

でも、この30って実は整数の30ではなくて文字数の30だったりする。

  p "#{a+b}"
  #=>"30" 

見た目は同じだからいいじゃん。

ってこの場合は思うんだけど、じゃあ、こういうのはどうだろう。


たとえば、。

    menu=['yoshoku','italian','japanese' ]
      puts 'dorenishiyoukana please select 1 2 3’
        n=gets.chomp
          puts "#{menu[n-1]}"  

getsっていうのは、その後にキーボードで入力した値を文字列で返すメソッドで、

改行とセットになってるメソッドなので、改行をはずす為に、chompってのをつける。

(今回は、chompなくてもいいんだけど、存在を忘れそうなので、あえて書いておくw)で、この、

   n=gets.chomp

なんだけど、私的には、「2」を入力したら、[2-1]=>[1]となり、

menu[1]=>'italian' なので、italian と表示されて欲しい。


でも、 puts 'dorenishiyoukana please select 1 2 3’の表示の後で数字の「 2 」を入力したとする。

でも、この n は、整数の「2」ではなくて、文字列の「"2"」となってるので、 

puts "#{menu[n-1]}"の[n-1]は[2-1]ではなく、["2"-1]となり、エラーが出る。つまり、

[2-1]という形にしたければ、文字列 "2" を、整数 2 に変換しないといけない。

で、ここで、to_i を使う。

    menu=['yoshoku','italian','japanese' ]
      puts ''dorenishiyoukana please select 1 2 3’
        n=gets.to_i
          puts "#{menu[n-1]}"

今度は、きちんと italian って表示される!ヽ(≧▽≦)ノ


《今日のまとめ》

gets:文字列入力専用&改行付。キーボードで入力した値を文字列で返すメソッド


to_i: String(文字列)クラスのメソッド。

    元になった文字列を整数に変換した値を返す。


gets.to_i:gets でキーボードから文字列(Stringクラスのオブジェクト)が返り、

    その値である文字のメソッド (String#to_i)が実行されて、入力された文字列

    を整数に変換した値が返る。



《おまけ》

文字列(String)を 整数(Integer)に変換はto_i

整数(Integer)を 文字列(String)に変換は to_s

TeiTei 2016/07/29 11:44 はじめまして。EaseUS SotwareのTeiと申します。
メールアドレスなどのご連絡先をいただけませんでしょうか。
弊社の製品レビューのご執筆をお願いしたいんですが…
恐縮ですが、メルアド:teiisyou@easeus.comまでご連絡いただけますでしょうか。

お手数ですが、ご覧になったら、このコメントを削除していただけませんか。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/kaede_e3/20090823/1250982849
リンク元