いつもお世話になっております。
System.out.println("数字を入力してください");
InputStreamReader reader = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(reader);
String str = br.readLine();
int res = Integer.parseInt(str);
と記述して画面に出力させた場合、数字以外を入力するとエラーになりますが、入力文字のチェックが可能な方法をご存知の方お願いします。
もうひとつ、作業が終わった後も"数字を入力してください"と繰り返すプログラムについてもご教授ください。
いつも簡単な質問で申し訳ありません・・。一応逆引き辞典で調べてはいるのですが。。
No.1ベストアンサー
- 回答日時:
>入力文字のチェック
try {
int res = Integer.parseInt(str);
}
catch(NumberFormatException e){
System.out.println("整数として解釈できない文字が入力されました");
}
のような感じで例外処理します。
>繰り返すプログラム
全体を
while(true){
}
で囲むと繰り返すプログラムになります。
trueの部分を条件式にして条件でループを終了するようにしておくか
if(条件)
break;
のようにループを条件で脱出できるようにしておきます。
BLUEPIXY様、ありがとうございます。今手元に開発環境が無いので自分で確かめられませんが参考にさせていただきます。while()ははじめて見ました。調べてみます。ありがとうございました。
No.4
- 回答日時:
判定に例外をトラップするというやり方はあまりお勧めできないですね。
try文自体あまり乱用するべきではないと思います。
まっとうに書けるのであれば書きましょう
public static void main(String[] args)throws Exception {
while(true){
System.out.println("数字を入力してください");
InputStreamReader reader = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(reader);
String str = br.readLine();
if(!str.matches("[0-9]+")){
System.out.println("数字ではありません");
continue;
}
int res = Integer.parseInt(str);
System.out.println("あなたが選択したのは ".concat(String.valueOf(res)));
}
}
covachanさま、遅れましたが、ご回答ありがとうございました。丁寧に解説していただいたのでそのまま練習に用いさせていただきました。
今後もよろしくお願いいたします。
No.3
- 回答日時:
String str = br.readLine();の処でIOExceptionが発生する可能性があるので、NumberFormatExceptionの後に補足する必要があるでしょう。
import java.io.*;
public class InputNumber {
public static void main(String[] args) {
int res = 0;
try{
System.out.println("数字を入力してください");
InputStreamReader reader = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(reader);
String str = br.readLine();
res = Integer.parseInt(str);
}catch(NumberFormatException e){
System.out.println("不正な入力です。" + e);
}catch(IOException ex){
ex.printStackTrace();
}
System.out.println("数字==" + res);
}
}
tachiwaさま、丁寧なプログラムありがとうございます。そのままテキストにできそうですね(失礼
お陰さまでよいべんきょうになりました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- Java Java 南京錠 2 2023/02/04 11:46
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- Java javaの質問です 次の機能を有するメソッド4つを自クラスに作成し、実装したいです 【機能】 足し算 1 2022/06/15 17:49
- C言語・C++・C# str[j++]の意味 2 2022/08/30 16:20
- C言語・C++・C# c言語配列の結合についてです。 なぜうまくいかないのでしょうか。 #include <stdio.h 4 2022/05/30 22:42
- Java Javaの問題なのですが、「3文字以上の英数字文字列を入力し、文字列の中に文字(9)が出てくるまでの 1 2023/06/06 18:55
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ループ処理の際、最後だけ","を...
-
java キーボード入力された値の...
-
テキストボックスに入力された...
-
Java 配列<選挙>
-
総称型ArrayList<E>への参照...
-
繰り返しによる星印の出力
-
Java 入力した整数値の合計を、...
-
3桁のカウンター表示
-
3つの値の中間値を求める
-
javaで素数判断プログラム作成...
-
キーボードから10人分の点数を...
-
〔java〕 計算結果に0をつける...
-
countに実行した回数をいれたい...
-
javaで九九の表を作りたい
-
エラー(互換性の無い型)
-
Ctrl+Zが入力されると終了する...
-
論理演算子”||”またはの入力方法
-
(急いでいます)Javaで3回間違...
-
Java、2の0乗~10乗の表示
-
数値⇒漢数字変換 java
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ループ処理の際、最後だけ","を...
-
java キーボード入力された値の...
-
Java、2の0乗~10乗の表示
-
コマンドライン引数の例外処理...
-
数値⇒漢数字変換 java
-
Ctrl+Zが入力されると終了する...
-
続・ZZZ,ZZZ,ZZ9形式の金額形式...
-
countに実行した回数をいれたい...
-
論理演算子”||”またはの入力方法
-
7つ数字を表示したら改行すると...
-
テキストボックスに入力された...
-
配列を逆順させて表示させる方...
-
繰り返しによる星印の出力
-
Java 入力した整数値の合計を、...
-
キーボードから10人分の点数を...
-
JAVAのfor文で困っています。
-
階乗の式
-
要素数が10の配列で、乱数0~9...
-
Java キーボードから負の数が入...
-
Randomメソッドの確率設定
おすすめ情報