前提・実現したいこと
生年月日の入力等、指定された範囲の数値入力が必要な場面で
指定範囲外の数値が入力された時に入力をやり直させたいです。
発生している問題・エラーメッセージ
なし
該当のソースコード
public class Main {
public static void main(String[]args) {
System.out.println("1から10の間の整数を入力してください");
int number = new java.util.Scanner (System.in).nextInt(); if(number<=0 || number>10) { System.out.println("指示と異なる数値が入力されました。もう一度入力しなおしてください。"); }
else {
System.out.println(number+"が入力されました。");
}
}
}
試したこと
googleで「Java goto文 代用」「Java 入力が不正な時 戻る」等検索をかける
補足情報(FW/ツールのバージョンなど)
つい最近プログラミングを勉強し始めました。
「スッキリわかるJava入門」を読んで勉強しています。
よろしくお願いいたします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/03/09 13:52
回答2件
0
ベストアンサー
適当に静的メソッドを置いておくと便利かと。
Java
1static int inputNum(String message, Scanner sc) { 2 while(true) { 3 System.out.println(message); 4 try { 5 int ret = Integer.parseInt(sc.nextLine()); 6 if(0 < ret && ret <= 10) { 7 return ret; 8 } 9 } 10 catch(NumberFormatException e) {} 11 } 12}
再帰バージョン。
Java
1static int inputNumRecursive(String message, Scanner sc) { 2 System.out.println(message); 3 try { 4 int ret = Integer.parseInt(sc.nextLine()); 5 if(0 < ret && ret <= 10) { 6 return ret; 7 } 8 } 9 catch(NumberFormatException e) {} 10 11 return inputNumRecursive(message, sc); 12}
このままコンパイルがとおるコード
Java
1import java.util.Scanner; 2 3class Main { 4 static int inputNum(String message, Scanner sc) { 5 while(true) { 6 System.out.println(message); 7 try { 8 int ret = Integer.parseInt(sc.nextLine()); 9 if(0 < ret && ret <= 10) { 10 return ret; 11 } 12 } 13 catch(NumberFormatException e) {} 14 } 15 } 16 17 public static void main(String[] args) { 18 try(Scanner sc = new Scanner(System.in)) { 19 int num = inputNum("1~10の数を入れてね", sc); 20 System.out.println("入力された数: " + num); 21 } 22 } 23}
投稿2018/03/08 15:34
編集2018/03/09 17:04総合スコア35660
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/03/08 15:44
2018/03/08 15:51
退会済みユーザー
2018/03/08 16:33
2018/03/09 01:01 編集
2018/03/09 04:26
退会済みユーザー
2018/03/09 15:52
退会済みユーザー
2018/03/09 15:54
退会済みユーザー
2018/03/09 15:55
2018/03/09 16:14
2018/03/09 17:01
退会済みユーザー
2018/03/10 04:31 編集
退会済みユーザー
2018/03/10 04:32
退会済みユーザー
2018/03/10 04:33
退会済みユーザー
2018/03/10 04:37
2018/03/10 04:42 編集
退会済みユーザー
2018/03/10 05:11
0
無限ループで回して、正しい値が入力されたら、ループを抜けるようにしたらいいのでは?
for(;;) { System.out.println("1から10の間の整数を入力してください"); int number = new java.util.Scanner(System.in).nextInt(); if (number <= 0 || number > 10) { System.out.println("指示と異なる数値が入力されました。もう一度入力しなおしてください。"); } else { System.out.println(number + "が入力されました。"); break; } }
投稿2018/03/08 14:29
総合スコア34
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/03/08 15:26
退会済みユーザー
2018/03/09 14:10
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。