質問よろしいでしょうか。
a = gets.chomp
while a != "BYE"
puts "what?"
a = gets.chomp
end
このプログラムをwhat?と聞き返されるたびにBYEと入力して、の繰り返しで三回目にそのループから抜けられるようにするにはどうすればよいでしょうか?
what?と聞かれる前(つまり初回)に入力したBYEもカウントしていいんかな?
そうならまずwhileループをbegin〜end while(ruby版do〜whileの構文)に書き換えてから全体を3.timesで囲むとか
n = 0
while n < 3
puts "what?"
a = gets.chomp
n += 1 if a == "BYE"
end
>>29>>30>>31 アドバイスありがとうございます。改善してみました。
3.times{
a=gets.chomp
while a != "BYE"
puts "what?"
a=gets.chomp
end}
ただ、これだとBYEと入力したあとにwhat?と返してくれません。どうしたものでしょうか。
今のままだとBYEと入力しない限りはwhatと返す(BYEと返すとループから抜けてしまう)ようになっているので、
BYEと入力してもwhatと返すようにしたいです。それで三回連続でBYEと入力したときだけループから抜けるようにしたいのですが。
BYEと入力した回数をカウンタで数えるのでしょうか。調べてみてもよく分からなかったので教えていただけるとありがたいです。
>>32 > 三回連続でBYEと入力したときだけループから抜けるようにしたいのですが
連続でないと駄目なの?
だったら
>>30は忘れて。これは
BYE
HELLO
BYE
BYE
みたいな入力で抜けることだけを想定して書いてるから
基本的には
>>31みたいな感じで、BYE以外が入力されたらカウンタをリセットすればいいんじゃないかな
34 :
uy:2012/08/05(日) 14:57:37.95
loop.each_with_object ["","",""] do | _, c |
puts "what?"
a = gets.chomp
p a
c << a
c.shift
break if c.join == "BYE"*3
end
35 :
uy:2012/08/05(日) 15:22:44.83
ミスった これcycleでいいや
loop.each_with_object ["","",""] do | _, c |
↓
[["","",""]].cycle do | c |