前提・実現したいこと
ユーザーから生年月日を受け取って星座を返すプログラムを作成したい。
要件
- 生年月日の標準入力を受け取る
- 当てはまる星座を返却する
参考
- 生年月日入力フォーマット: {yyyy-mm-dd}
- 出力星座フォーマット: あなたの星座は{ 当てはまる星座名 }です!
該当のソースコード
Ruby
1puts "生年月日を入力してください" 2puts "{yyyy-mm-dd}" 3input = gets.chomp 4yyyy, mm, dd = input.split("-").map(&:to_i) 5 6if mm == 3 7 if 21 <= dd && dd <= 31 8 puts "あなたの星座は牡羊座です!" 9 elsif 1 <= dd && dd <= 20 10 puts "あなたの星座は魚座です!" 11 else 12 puts "" 13 end 14end 15 if mm == 4 16 if 1 <= dd && dd <= 19 17 puts "あなたの星座は牡羊座です!" 18 elsif 20 <= dd && dd <= 30 19 puts "あなたの星座は牡牛座です!" 20 else 21 puts "" 22 end 23end 24if mm == 5 25 if 1 <= dd && dd <= 20 26 puts "あなたの星座は牡牛座です!" 27 elsif 21 <= dd && dd <= 31 28 puts "あなたの星座は双子座です!" 29 else 30 puts "" 31 end 32end 33if mm == 6 34 if 1 <= dd && dd <= 21 35 puts "あなたの星座は双子座です!" 36 elsif 22 <= dd && dd <= 30 37 puts "あなたの星座はかに座です!" 38 else 39 puts "" 40 end 41end 42if mm == 7 43 if 1 <= dd && dd <= 22 44 puts "あなたの星座はかに座です!" 45 elsif 23 <= dd && dd <= 31 46 puts "あなたの星座は獅子座です!" 47 else 48 puts "" 49 end 50end 51if mm == 8 52 if 1 <= dd && dd <= 22 53 puts "あなたの星座は獅子座です!" 54 elsif 23 <= dd && dd <= 31 55 puts "あなたの星座は乙女座です!" 56 else 57 puts "" 58 end 59end 60if mm == 9 61 if 1 <= dd && dd <= 22 62 puts "あなたの星座は乙女座です!" 63 elsif 23 <= dd && dd <= 30 64 puts "あなたの星座は天秤座です!" 65 else 66 puts "" 67 end 68end 69if mm == 10 70 if 1 <= dd && dd <= 23 71 puts "あなたの星座は天秤座です!" 72 elsif 24 <= dd && dd <= 31 73 puts "あなたの星座は蠍座です!" 74 else 75 puts "" 76 end 77end 78if mm == 11 79 if 1 <= dd && dd <= 22 80 puts "あなたの星座は蠍座です!" 81 elsif 23 <= dd && dd <= 30 82 puts "あなたの星座は射手座です!" 83 else 84 puts "" 85 end 86end 87if mm == 12 88 if 1 <= dd && dd <= 21 89 puts "あなたの星座は射手座です!" 90 elsif 22 <= dd && dd <= 31 91 puts "あなたの星座は山羊座です!" 92 else 93 puts "" 94 end 95end 96if mm == 1 97 if 1 <= dd && dd <= 19 98 puts "あなたの星座は山羊座です!" 99 elsif 20 <= dd && dd <= 31 100 puts "あなたの星座は水瓶座です!" 101 else 102 puts "" 103 end 104end 105if mm == 2 106 if 1 <= dd && dd <= 18 107 puts "あなたの星座は水瓶座です!" 108 elsif 19 <= dd && dd <= 29 109 puts "あなたの星座は魚座です!" 110 else 111 puts "" 112 end 113end
どこがおかしいか教えていただきたいです。
現在のコードで、どういう問題があるのですか?
PHPの仕様は詳しくありませんが、文字列と数字を比較しようとして違うとか言われているとかですかね。
それなら一度mmとddの型変更をしてみてはいかがでしょうか?
>stdioさん
PHPではなく、Rubyですが。。。(タグにも付いています)また、オブジェクトのクラス自体はInteger(整数)になっているようです。
irb(main):006:0> yyyy,mm,dd = gets.chomp.split("-").map(&:to_i)
2020-06-18
=> [2020, 6, 18]
irb(main):007:0> p yyyy.class
Integer
=> Integer
irb(main):008:0> p mm.class
Integer
=> Integer
irb(main):009:0> p dd.class
Integer
=> Integer
Rubyでしたか、これは失礼しました。
それなら、どんな問題があるのでしょうかね。
プログラムを見ている限り、特にエラー等もなさそうですが...
ざっと見ではおかしくないですが、期待どおりの動きでないとすると、どこでしょう?
それをいただかないときついです
んでもって、星座の変わる日が年に依ってすこしずつ動くのご存知ですか?
回答1件
あなたの回答
tips
プレビュー