• ベストアンサー

文字列が数字のみで構成されているかを判別する

アプレットで簡単な電話帳を作成しています。 電話帳の個人データの追加には氏名、電話番号を入力するというシンプルな作りなのですが、 電話番号として入力した文字列に数字(0~9)以外の文字が含まれていた場合はエラーを表示させたいのですが、何か良い方法はありませんでしょうか? 電話番号:0123456789→true 電話番号:054s2a85d4→false というような結果を返してくれるメソッドがあれば良いのですが… isDigits()というメソッドが使えそうでしたが、Javaを習い数週間なので、どうすれば良いか分からず困っています。 よろしくお願いします

質問者が選んだベストアンサー

  • ベストアンサー
回答No.6

/* 正規表現はまた次の機会にしたいのならば、以下のようなアルゴリズムもある。 ただし、ちょっと長くなったかな。(それでも、電話番号ごとき5秒以上もかからないとは思うけど。) */ class TelephoneBook{  static public void main(String... num){ // JDK5   String tel1 = "0123456789";   String tel2 = "054s2a85d4";   String tel3 = "-5";   String tel4 = "5";   inputCheck(tel1);   inputCheck(tel2);   inputCheck(tel3);   inputCheck(tel4);  }  static public void inputCheck(String tel){   for(int i=0;i<tel.length();i++){    int j=0;    while(j<10){     String char_str = "";     // charを強引にString     char_str = char_str + tel.charAt(i);     // 数字だったら、すぐ隣の文字に移る。     if(char_str.equals(String.valueOf(j))) break;     j++;    }    if(j==10){     System.out.println(tel + "の入力チェック→" + false);     return; // 数字以外と分れば、すぐにチェック終了。    }   }   System.out.println(tel + "の入力チェック→" + true);  } }

その他の回答 (5)

回答No.5

混乱されているようですが class Q3461354A{ public static void main(String[] args){ /* int i = Integer.parseInt("-5"); */ String aaa = "0123456789"; if(aaa.matches("^[0-9]{10,11}$")) { System.out.println("match"); } } } で十分です。エスケープをする必要がありません

回答No.4

今回は電話番号なので >#1さんの方法でも大丈夫で はありません。 class Q3461354A{ public static void main(String[] args){ int i = Integer.parseInt("-5"); } } String.matchesは大丈夫だと思うけど。

回答No.3

すいません。 もしかしたら、こうかも。 動作環境が今ないので確認できません…。 if(aaa.matches("^[0-9]\\{10,11\\}$")) {

回答No.2

String.matches(String regex) が使えます。 このような簡単なマッチングの場合は #1さんの方法でも大丈夫です。 複雑になるとこちらの方法がいいでしょう。 正規表現でマッチするかどうかテストする方法です。 (動作は確認してません) String aaa = "0123456789"; // 与えられた文字列が 10桁以上11桁までで数字である場合 true if(aaa.matches("^[0-9]\{10,11\}$")) { // 数字に一致した場合の処理 } else { // 一致しなかった場合の処理 } 正規表現自体は ファイル名に使うワイルドカード(*.java とか ??.html みたいな)をもっと複雑にしたものです。 ここでは書ききれませんので、興味あれば調べてください。

  • neko_noko
  • ベストアンサー率45% (146/319)
回答No.1

入門書などによくある書き方で、Integer.parseInt(String s)メソッドを使う方法があります。 int i = Integer.parseInt("123"); というように、引数に文字を指定してint型(つまり数値)の値に変換して返すメソッドです。 上の例ではiに、123が入ります。 int i = Integer.parseInt("0132a"); とした場合、数値には変換できないのでNumberFormatExceptionという例外が発生します。 ※例外処理を行う必要があるので、そこは学習する必要がありますが…

関連するQ&A

専門家に質問してみよう