- ベストアンサー
文字列が数字のみで構成されているかを判別する
アプレットで簡単な電話帳を作成しています。 電話帳の個人データの追加には氏名、電話番号を入力するというシンプルな作りなのですが、 電話番号として入力した文字列に数字(0~9)以外の文字が含まれていた場合はエラーを表示させたいのですが、何か良い方法はありませんでしょうか? 電話番号:0123456789→true 電話番号:054s2a85d4→false というような結果を返してくれるメソッドがあれば良いのですが… isDigits()というメソッドが使えそうでしたが、Javaを習い数週間なので、どうすれば良いか分からず困っています。 よろしくお願いします
- みんなの回答 (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)
- himajin100000
- ベストアンサー率54% (1660/3060)
混乱されているようですが 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"); } } } で十分です。エスケープをする必要がありません
- himajin100000
- ベストアンサー率54% (1660/3060)
今回は電話番号なので >#1さんの方法でも大丈夫で はありません。 class Q3461354A{ public static void main(String[] args){ int i = Integer.parseInt("-5"); } } String.matchesは大丈夫だと思うけど。
- SpiralGalaxy
- ベストアンサー率39% (649/1653)
すいません。 もしかしたら、こうかも。 動作環境が今ないので確認できません…。 if(aaa.matches("^[0-9]\\{10,11\\}$")) {
- SpiralGalaxy
- ベストアンサー率39% (649/1653)
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)
入門書などによくある書き方で、Integer.parseInt(String s)メソッドを使う方法があります。 int i = Integer.parseInt("123"); というように、引数に文字を指定してint型(つまり数値)の値に変換して返すメソッドです。 上の例ではiに、123が入ります。 int i = Integer.parseInt("0132a"); とした場合、数値には変換できないのでNumberFormatExceptionという例外が発生します。 ※例外処理を行う必要があるので、そこは学習する必要がありますが…