実現したい事:
Rubyの勉強で簡易的な電卓を作成しています。
途中でwhile文を使用しているのですが、うまくループが出来ません。
どなたかご教授をお願い致します。
環境:
Windows10
ruby 2.6.9p207 [x64-mingw32]
エラー:(実行時のエラーメッセージはなし)
実行例↓
計算を続行しますか?
続行なら「1」、終了なら「0」を入力してください。
計算を終了します。
※1を入力しても、計算せずに即時終了してしまう。
該当コード
- #表記順に計算する簡易電卓
- def calculate
- puts("計算式を入力してください")
- puts("※ただし最初の数字は整数かつ正の数を入力してください")
- input_value = gets
- puts input_value
- num_list = input_value.scan(/\d+/)
- print("入力した数値の一覧→")
- p num_list
- int_num_list = num_list.map(&:to_i)
- p int_num_list
- symbol_list = input_value.strip.scan(/\D+/)
- print("入力した演算子の一覧→")
- p symbol_list
- answer = int_num_list[0]
- puts(answer)
- for i in 0..2
-
case symbol_list[i]
-
when "+"
-
answer = answer + int_num_list[i+1]
-
puts answer
-
when "-"
-
answer = answer - int_num_list[i+1]
-
puts answer
-
when "*"
-
answer = answer * int_num_list[i+1]
-
puts answer
-
when "/"
-
answer = answer / int_num_list[i+1]
-
puts answer
-
when "%"
-
answer = answer % int_num_list[i+1]
-
puts answer
-
when "**"
-
answer = answer ** int_num_list[i+1]
-
puts answer
-
else
-
puts "規定の演算子ではありません"
-
end
- i += 1
- end
- end
- def select_menu
- puts("計算を続行しますか?")
- puts("続行なら「1」、終了なら「0」を入力してください。")
- input_select = gets
- while input_select == "1" do
-
calculate
-
select_menu
- end
- end
- calculate
- select_menu
- puts("計算を終了します")
補足while文は47行目~50行目です。
最初に計算しただけで1度もループせずに終わってしまう原因を
教えて頂ければと思います。
宜しくお願い致します。
再度補足で実際の実行例を載せておきます。
宜しくお願い致します。
ruby calculator.rb
計算式を入力してください
※ただし最初の数字は整数かつ正の数を入力してください
243+100/2-50
243+100/2-50
入力した数値の一覧→["24", "3", "100", "2", "50"]
[24, 3, 100, 2, 50]
入力した演算子の一覧→["*", "+", "/", "-"]
24
72
172
86
計算を続行しますか?
続行なら「1」、終了なら「0」を入力してください。
1
計算を終了します
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/12/24 09:54
2021/12/24 11:45