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

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

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

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

Q&A

解決済

2回答

521閲覧

Rubyで繰り返しの処理が望む結果になりません

RuBeginner

総合スコア5

Ruby

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

1グッド

1クリップ

投稿2020/04/21 09:31

前提・実現したいこと

Rubyで簡単な数字ゲームを作って練習しています。
ひとまず、コードは動いたのですが繰り返そうとすると、うまく動いてくれません。

全てのBoxの中身が0になるまで処理を繰り返したいです。

発生している問題・エラーメッセージ

エラーは出ませんが、whileを使うとProcess finished with exit code 0になって動いてくれません。

該当のソースコード

Ruby

1boxA = 6 2boxB = 6 3boxC = 6 4 5while boxA == 0 && boxB == 0 && boxC == 0 do 6 puts "BoxをA〜Cから選んでください" 7 number = gets.chomp 8 puts "あなたが選んだBoxは#{number}です" 9 puts "何個のボールを取りますか?" 10 count = gets.chomp.to_i 11 puts "#{count}個取りました" 12 13 if number == "A" 14 boxA -= count 15 elsif number == "B" 16 boxB -= count 17 elsif number == "C" 18 boxC -= count 19 end 20 puts "残り、boxAは#{boxA}個、boxBは#{boxB}個、boxCは#{boxC}個です" 21end

試したこと

5行目のwhile boxA == 0 && boxB == 0 && boxC == 0 doと
最後のendをコメントアウトするとと動いてはくれます。

しかし、繰り返すことがうまくできません。
お助けください。お願いします。

補足情報(FW/ツールのバージョンなど)

Ruby2.6.5

DrqYuto👍を押しています

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

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

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

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

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

guest

回答2

0

ベストアンサー

while boxA == 0 && boxB == 0 && boxC == 0 do を
until boxA == 0 && boxB == 0 && boxC == 0 do
に変えてください。

投稿2020/04/21 10:28

tatsu99

総合スコア5438

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

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

RuBeginner

2020/04/21 10:43

ありがとうございます。望む結果になりました。 whileとuntilの理解が深まりました。こうやって使い分けるのですね!
guest

0

whileの条件は、条件が成立する間繰り返す、という意味です。

while boxA == 0 && boxB == 0 && boxC == 0 doだと、最初の時点で条件が成立していないため、ループの中身は一度も実行されません。

投稿2020/04/21 09:49

maisumakun

総合スコア145183

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

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

RuBeginner

2020/04/21 10:09

ありがとうございます。whileの使い方に関して、全く誤った理解をしていました。 試しに'while boxA > 0 && boxB > 0 && boxC > 0 do'にしてみたところ、いずれかの箱が0になるまでは動いてくれるようになりました。 私が実現したい全ての箱が0になったら、という結果を得るためにはwhileを使うという考え方で合っているのでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問