質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Q&A

解決済

2回答

1601閲覧

月を整数値として読み込んでそれに対応する季節を表示するプログラムを作りたい

退会済みユーザー

退会済みユーザー

総合スコア0

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

1グッド

1クリップ

投稿2020/03/11 00:15

月を整数値として読み込んでそれに対応する季節を表示するプログラムを作りたいのですが、+@で好きなだけ何度でも繰り返して入力表示させたいです。そして1~12以外の値が読み込まれた場合は再入力させるよう実装したいです
下が僕のコードなのですが
retsでもう一度をさせたいのですが、retsをどこに置けばいいのかわからないです。
どうしたらいいでしょうか?

Ruby

1print "季節を求めます" 2while true 3 while true 4 print "何月ですか?" 5 month = gets.to_i 6 break if month >= 1 || month <= 12 7 end 8 if month >= 3 && month <= 5 9 puts "それは春です" 10 elsif month >= 6 && month <= 8 11 puts "それは夏です" 12 elsif month >= 9 && month <= 11 13 puts "それは秋です" 14 elsif month == 12 || month == 1 || month == 2 15 puts "それは冬です" 16 end 17 puts "もう一度? 1...Yes/0...No" 18 rets = gets.to_i 19 break if rets == 1 20end
DrqYuto👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

rets の位置は合っています。条件が違うようです。最後の break if rets == 1break if rets != 1 に変更すると期待どおり動くと思います。

print "季節を求めます" while true while true print "何月ですか?" month = gets.to_i break if month >= 1 || month <= 12 end if month >= 3 && month <= 5 puts "それは春です" elsif month >= 6 && month <= 8 puts "それは夏です" elsif month >= 9 && month <= 11 puts "それは秋です" elsif month == 12 || month == 1 || month == 2 puts "それは冬です" end puts "もう一度? 1...Yes/0...No" rets = gets.to_i break if rets != 1 end

投稿2020/03/11 00:19

SeieiMiyagi

総合スコア247

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/03/11 01:11

ありがとうございます!解決いたしました???? なぜ思いつかなかったのだろうと勝手ながら落ち込みました(笑)
guest

0

print "季節を求めます" while true while true print "何月ですか?" month = gets.to_i break if month >= 1 || month <= 12 end case month when 3..5 puts "それは春です" when 6..8 puts "それは夏です" when 9..11 puts "それは秋です" when 12,1,2 puts "それは冬です" end puts "もう一度? 1...Yes/0...No" rets = gets.to_i break if rets != 1 end

caseとwhenで書いてみました…

参考

  • 制御構造 (Ruby 2.7.0 リファレンスマニュアル)

https://docs.ruby-lang.org/ja/latest/doc/spec=2fcontrol.html#case
"case は一つの式に対する一致判定による分岐を行います。when 節で指定された値と最初の式を評価した結果とを演算子 === を用いて比較して、一致する場合には when 節の本体を評価します。

つまり、

case 式0 when 式1, 式2 stmt1 when 式3, 式4 stmt2 else stmt3 end

"

  • case文 - 条件分岐 - Ruby入門

https://www.javadrive.jp/ruby/if/index9.html
"複数の値を指定する
一致しているかどうか調べる値は一度に複数指定することが可能です。

case 対象オブジェクト when 値1,値2 then ... when 値3,値4,値5 then ... end

複数の値に対して同じ処理を実行する場合は、「when」の後に値をカンマ(,)で区切って並べて記述します。"

イメージ説明

投稿2020/03/11 05:14

DrqYuto

総合スコア432

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問