読者です 読者をやめる 読者になる 読者になる

配列メソッド>練習4

Ruby 練習

つづき

好きな数だけ単語の入力をしてもらい(1行に1単語と入力が続き 最後は空行でEnterのみとする)それをアルファベット順に並び替えて出力するようなプログラムを書いてみましょう。
空行でEnterを押した時つねにプログラムが終了するかなどのテストもおこないましょうね。

読んだの

読んでいくつか試行した
Array
逆引きRuby -配列
むずかしめ↓
お気軽Ruby プログラミング入門
お気軽でなかった

参考

このプログラムを自分で書くなら以下の順番で書きます
1. p gets というコードで Enter, foobar などを入力してみる
2. "\n" が入ることがわかるが、これが邪魔なので gets.chomp にする
3. p gets.chomp をループの中に入れる (loop do / end や while true / end) など
4. word = gets.chomp と代入するようにする
5. word が空文字かどうかを調べてループを抜けられるようにする
6. word が空文字じゃないときの処理を書けるように if を書く

もっかい仕様文を整理

  • 好きな数だけユーザが好きな単語を入力する >gets.chompでしょうたぶん
  • 1行ずつ、1単語出力される >つまり、配列[]=word の代入値を出力 > もしかして:pushか
  • Enter(空行)になるまで続く > untilかwhile...end
    • while の場合: !=
  • Enter(endまで)になったら、アルファベット順にwordを出力

シンプルにいこう

alphabets = []
  word = gets.chomp
  until word ==''
  word.push alphabets
  
  alphabets =gets.chomp
  end
  
 puts alphabets.sort

だめ。 pushがおかしい。

moomin:programmingRuby tomomi$ ruby array1.rb
hello
array1.rb:4: undefined method `push' for "hello":String (NoMethodError)

push例

Array

array = [1, 2, 3]
array.push 4
array.push [5, 6]
array.push 7, 8
p array          # => [1, 2, 3, 4, [5, 6], 7, 8]

Oh, wordはメソッドではない。alphabetsか

お?挙動は正しい気がするな。ドヤ顔

alphabets = []
  word =gets.chomp
   until word == ''
   alphabets.push word
   word =gets.chomp
  end

  if
   puts alphabets.sort
  end

一応アルファベット順に並びました

moomin:programmingRuby tomomi$ ruby array1.rb
spain
italy 
france
sweeden
brazil
japan
denmark
doya

brazil
denmark
doya
france
italy
japan
spain
sweeden

なんか違う気する ifの場所。
休憩…