teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

2

修正しました。

2020/06/17 18:04

投稿

xyjs
xyjs

スコア13

title CHANGED
File without changes
body CHANGED
@@ -15,41 +15,117 @@
15
15
  ```Ruby
16
16
  puts "生年月日を入力してください"
17
17
  puts "{yyyy-mm-dd}"
18
- input = gets.chomp.to_i
18
+ input = gets.chomp
19
19
  yyyy, mm, dd = input.split("-").map(&:to_i)
20
20
 
21
- def judge(month, day)
22
- names = ["山羊座", "水瓶座", "魚座", "牡羊座",
23
- "牡牛座", "双子座", "蟹座", "獅子座", "乙女座",
24
- "天秤座", "蠍座", "射手座"]
25
-
26
- day1 = [19, 18, 20, 19, 20,
27
- 21, 22, 22, 22, 23, 22, 21]
28
-
29
- day2 = [31, 29, 31, 30, 31,
30
- 30, 31, 31, 30, 31, 30, 31]
31
-
32
- for count in 0..11
33
- if month == count + 1
21
+ if mm == 3
34
- if day <= day1[count]
22
+ if 21 <= dd && dd <= 31
35
- name = names[count]
23
+ puts "あなたの星座は牡羊座です!"
36
- return name
37
- elsif day <= day2[count]
24
+ elsif 1 <= dd && dd <= 20
38
- name = names[(count + 1) % names.length]
25
+ puts "あなたの星座は魚座です!"
39
- return name
40
- end
26
+ else
41
- end
27
+ puts ""
42
28
  end
43
- ju = judge(mm, dd)
44
- print ju
45
29
  end
30
+ if mm == 4
31
+ if 1 <= dd && dd <= 19
32
+ puts "あなたの星座は牡羊座です!"
33
+ elsif 20 <= dd && dd <= 30
34
+ puts "あなたの星座は牡牛座です!"
35
+ else
36
+ puts ""
37
+ end
38
+ end
39
+ if mm == 5
40
+ if 1 <= dd && dd <= 20
41
+ puts "あなたの星座は牡牛座です!"
42
+ elsif 21 <= dd && dd <= 31
43
+ puts "あなたの星座は双子座です!"
44
+ else
45
+ puts ""
46
+ end
47
+ end
48
+ if mm == 6
49
+ if 1 <= dd && dd <= 21
50
+ puts "あなたの星座は双子座です!"
51
+ elsif 22 <= dd && dd <= 30
52
+ puts "あなたの星座はかに座です!"
53
+ else
54
+ puts ""
55
+ end
56
+ end
57
+ if mm == 7
58
+ if 1 <= dd && dd <= 22
59
+ puts "あなたの星座はかに座です!"
60
+ elsif 23 <= dd && dd <= 31
61
+ puts "あなたの星座は獅子座です!"
62
+ else
63
+ puts ""
64
+ end
65
+ end
66
+ if mm == 8
67
+ if 1 <= dd && dd <= 22
68
+ puts "あなたの星座は獅子座です!"
69
+ elsif 23 <= dd && dd <= 31
70
+ puts "あなたの星座は乙女座です!"
71
+ else
72
+ puts ""
73
+ end
74
+ end
75
+ if mm == 9
76
+ if 1 <= dd && dd <= 22
77
+ puts "あなたの星座は乙女座です!"
78
+ elsif 23 <= dd && dd <= 30
79
+ puts "あなたの星座は天秤座です!"
80
+ else
81
+ puts ""
82
+ end
83
+ end
84
+ if mm == 10
85
+ if 1 <= dd && dd <= 23
86
+ puts "あなたの星座は天秤座です!"
87
+ elsif 24 <= dd && dd <= 31
88
+ puts "あなたの星座は蠍座です!"
89
+ else
90
+ puts ""
91
+ end
92
+ end
93
+ if mm == 11
94
+ if 1 <= dd && dd <= 22
95
+ puts "あなたの星座は蠍座です!"
96
+ elsif 23 <= dd && dd <= 30
97
+ puts "あなたの星座は射手座です!"
98
+ else
99
+ puts ""
100
+ end
101
+ end
102
+ if mm == 12
103
+ if 1 <= dd && dd <= 21
104
+ puts "あなたの星座は射手座です!"
105
+ elsif 22 <= dd && dd <= 31
106
+ puts "あなたの星座は山羊座です!"
107
+ else
108
+ puts ""
109
+ end
110
+ end
111
+ if mm == 1
112
+ if 1 <= dd && dd <= 19
113
+ puts "あなたの星座は山羊座です!"
114
+ elsif 20 <= dd && dd <= 31
115
+ puts "あなたの星座は水瓶座です!"
116
+ else
117
+ puts ""
118
+ end
119
+ end
120
+ if mm == 2
121
+ if 1 <= dd && dd <= 18
122
+ puts "あなたの星座は水瓶座です!"
123
+ elsif 19 <= dd && dd <= 29
124
+ puts "あなたの星座は魚座です!"
125
+ else
126
+ puts ""
127
+ end
128
+ end
46
129
  ```
47
130
 
48
- ### 発生している問題・エラーメッセージ
49
-
50
- ```
51
- Traceback (most recent call last):
52
- hoge.rb:4:in `<main>': undefined method `split' for 2000:Integer (NoMethodError)
53
- ```
54
-
55
131
  どこがおかしいか教えていただきたいです。

1

わかりずらいと指摘されたプログラムを記載していました。今回の質問はこちらになります。

2020/06/17 18:04

投稿

xyjs
xyjs

スコア13

title CHANGED
File without changes
body CHANGED
@@ -15,83 +15,41 @@
15
15
  ```Ruby
16
16
  puts "生年月日を入力してください"
17
17
  puts "{yyyy-mm-dd}"
18
- input = gets.chomp
18
+ input = gets.chomp.to_i
19
- puts input
20
19
  yyyy, mm, dd = input.split("-").map(&:to_i)
21
20
 
21
+ def judge(month, day)
22
+ names = ["山羊座", "水瓶座", "魚座", "牡羊座",
23
+ "牡牛座", "双子座", "蟹座", "獅子座", "乙女座",
24
+ "天秤座", "蠍座", "射手座"]
25
+
26
+ day1 = [19, 18, 20, 19, 20,
27
+ 21, 22, 22, 22, 23, 22, 21]
28
+
29
+ day2 = [31, 29, 31, 30, 31,
30
+ 30, 31, 31, 30, 31, 30, 31]
31
+
32
+ for count in 0..11
22
- if mm == 3
33
+ if month == count + 1
23
- if 21 <= dd && dd <=31
34
+ if day <= day1[count]
24
- puts "あなたの星座は牡羊座です!"
35
+ name = names[count]
36
+ return name
25
- elsif 1 <= dd && dd <= 20
37
+ elsif day <= day2[count]
26
- puts "あなたの星座は魚座です!"
38
+ name = names[(count + 1) % names.length]
39
+ return name
40
+ end
41
+ end
27
42
  end
28
- elsif mm == 4
43
+ ju = judge(mm, dd)
29
- if 1 <= dd && dd <= 19
30
- puts "あなたの星座は牡羊座です!"
31
- elsif 20 <= dd && dd <= 30
32
- puts "あなたの星座は牡牛座です!"
33
- end
34
- elsif mm == 5
44
+ print ju
35
- if 1 <= dd && dd <= 20
36
- puts "あなたの星座は牡牛座です!"
37
- elsif 21 <= dd && dd <= 31
38
- puts "あなたの星座は双子座です!"
39
- end
40
- elsif mm == 6
41
- if 1 <= dd && dd <= 21
42
- puts "あなたの星座は双子座です!"
43
- elsif 22 <= dd && dd <= 30
44
- puts "あなたの星座はかに座です!"
45
- end
46
- elsif mm == 7
47
- if 1 <= dd && dd <= 22
48
- puts "あなたの星座はかに座です!"
49
- elsif 23 <= dd && dd <= 31
50
- puts "あなたの星座は獅子座です!"
51
- end
52
- elsif mm == 8
53
- if 1 <= dd && dd <= 22
54
- puts "あなたの星座は獅子座です!"
55
- elsif 23 <= dd && dd <= 31
56
- puts "あなたの星座は乙女座です!"
57
- end
58
- elsif mm == 9
59
- if 1 <= dd && dd <= 22
60
- puts "あなたの星座は乙女座です!"
61
- elsif 23 <= dd && dd <= 30
62
- puts "あなたの星座は天秤座です!"
63
- end
64
- elsif mm == 10
65
- if 1 <= dd && dd <= 23
66
- puts "あなたの星座は天秤座です!"
67
- elsif 24 <= dd && dd <= 31
68
- puts "あなたの星座は蠍座です!"
69
- end
70
- elsif mm == 11
71
- if 1 <= dd && dd <= 22
72
- puts "あなたの星座は蠍座です!"
73
- elsif 23 <= dd && dd <= 30
74
- puts "あなたの星座は射手座です!"
75
- end
76
- elsif mm == 12
77
- if 1 <= dd && dd <= 21
78
- puts "あなたの星座は射手座です!"
79
- elsif 22 <= dd && dd <= 31
80
- puts "あなたの星座は山羊座です!"
81
- end
82
- elsif mm == 1
83
- if 1 <= dd && dd <= 19
84
- puts "あなたの星座は山羊座です!"
85
- elsif 20 <= dd && dd <= 31
86
- puts "あなたの星座は水瓶座です!"
87
- end
88
- elsif mm == 2
89
- if 1 <= dd && dd <= 18
90
- puts "あなたの星座は水瓶座です!"
91
- elsif 19 <= dd && dd <= 29
92
- puts "あなたの星座は魚座です!"
93
- end
94
45
  end
95
46
  ```
96
47
 
48
+ ### 発生している問題・エラーメッセージ
49
+
50
+ ```
51
+ Traceback (most recent call last):
52
+ hoge.rb:4:in `<main>': undefined method `split' for 2000:Integer (NoMethodError)
53
+ ```
54
+
97
55
  どこがおかしいか教えていただきたいです。