dポイントプレゼントキャンペーン実施中!

いつもお世話になっております。
System.out.println("数字を入力してください");
InputStreamReader reader = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(reader);
String str = br.readLine();
int res = Integer.parseInt(str);
と記述して画面に出力させた場合、数字以外を入力するとエラーになりますが、入力文字のチェックが可能な方法をご存知の方お願いします。
もうひとつ、作業が終わった後も"数字を入力してください"と繰り返すプログラムについてもご教授ください。
いつも簡単な質問で申し訳ありません・・。一応逆引き辞典で調べてはいるのですが。。

A 回答 (4件)

>入力文字のチェック


try {
int res = Integer.parseInt(str);
}
catch(NumberFormatException e){
System.out.println("整数として解釈できない文字が入力されました");
}
のような感じで例外処理します。

>繰り返すプログラム
全体を
while(true){

}
で囲むと繰り返すプログラムになります。
trueの部分を条件式にして条件でループを終了するようにしておくか
if(条件)
break;
のようにループを条件で脱出できるようにしておきます。
    • good
    • 1
この回答へのお礼

BLUEPIXY様、ありがとうございます。今手元に開発環境が無いので自分で確かめられませんが参考にさせていただきます。while()ははじめて見ました。調べてみます。ありがとうございました。

お礼日時:2005/05/27 18:53

判定に例外をトラップするというやり方はあまりお勧めできないですね。


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)));
}

}
    • good
    • 0
この回答へのお礼

covachanさま、遅れましたが、ご回答ありがとうございました。丁寧に解説していただいたのでそのまま練習に用いさせていただきました。
今後もよろしくお願いいたします。

お礼日時:2005/05/30 10:04

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);
}
}
    • good
    • 0
この回答へのお礼

tachiwaさま、丁寧なプログラムありがとうございます。そのままテキストにできそうですね(失礼
お陰さまでよいべんきょうになりました。

お礼日時:2005/05/27 22:42

好みの問題ですが、


例外を発生させるのが嫌なら
for(int i = 0;i < str.length();i++){
  if(!Character.isDigit(str.charAt(i)){
    //数字以外が入力された
  }
}
とするのも。
    • good
    • 0
この回答へのお礼

pcbeginner様いつもありがとうございます。
勉強になります。例外以外の方法があるんですね~

お礼日時:2005/05/27 20:32

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!