trycatchでtryの処理に戻す方法
发布时间:2026-11-14 | 浏览:1
入力してもらいそのデータを扱うコンソールアプリを作成しております。そのデータ入力の際に、 intで価格と仮かどうかを入力してもらいます。
教えてほしいこと ・trycatchでもし文字列が入力された場合をcatchにしているのですが、その際に再度入力してもらうようにしたいです。(tryの処理に戻る)どう記述すればよいのでしょうか?
入力→文字列打ち込まれた場合→再入力 入力→数字→次の質問に進む という形です。
・またこの下記コードで実行すると、コンソールで仮の場合は1を仮じゃない場合は2を入力してください。と聞いたあとすぐに(こちらがうちこむことなく)catchに入り、文字列が入力されませんでしたが出てきてしまいます。これは何が原因でしょうか?(コード下のコンソール表示参照)
初心者の為、説明不足な点があると思いますが何卒お願いいたします。
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
シンプルに、try-catchをwhileなどのループで囲ってしまえばいいです。 無限ループにして、「成功した時抜ける」のが一番簡単なつくりだと思います。
ただし、この方法だけでは数字ではない文字列が入力された場合に正真正銘の無限ループになります。これは「読み込もうとしたトークンが数字であった場合だけ読み進める」というnextInt()の仕様が関係しており、**数字ではなかった場合は読み進めません。**今回の例で言うと、"d"が数字ではないためScannerのカーソル(読もうとする始点)が"d"の前から動けません。"d"を打ち込んだ時に、1か2かを問われて入力できずに最後まで進んでしまう原因もここにあります。 そのため、数字ではなかった場合に、それを読み飛ばす工程が必要になります。
投稿 2020/05/05 05:34
2020/05/05 07:44
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
15分調べてもわからないことは teratailで質問しよう!
ただいまの回答率 85 . 25 %
質問をまとめることで 思考を整理して素早く解決
テンプレート機能で 簡単に質問をまとめる
trycatchでtryの処理に戻す方法