アプリ版:「スタンプのみでお礼する」機能のリリースについて

アプレットで簡単な電話帳を作成しています。
電話帳の個人データの追加には氏名、電話番号を入力するというシンプルな作りなのですが、
電話番号として入力した文字列に数字(0~9)以外の文字が含まれていた場合はエラーを表示させたいのですが、何か良い方法はありませんでしょうか?

電話番号:0123456789→true
電話番号:054s2a85d4→false
というような結果を返してくれるメソッドがあれば良いのですが…
isDigits()というメソッドが使えそうでしたが、Javaを習い数週間なので、どうすれば良いか分からず困っています。

よろしくお願いします

A 回答 (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);
 }
}
    • good
    • 1

混乱されているようですが



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

}

で十分です。エスケープをする必要がありません
    • good
    • 0

今回は電話番号なので


>#1さんの方法でも大丈夫で
はありません。

class Q3461354A{

public static void main(String[] args){
int i = Integer.parseInt("-5");

}

}

String.matchesは大丈夫だと思うけど。
    • good
    • 0

すいません。


もしかしたら、こうかも。
動作環境が今ないので確認できません…。

if(aaa.matches("^[0-9]\\{10,11\\}$")) {
    • good
    • 1

String.matches(String regex) が使えます。


このような簡単なマッチングの場合は
#1さんの方法でも大丈夫です。
複雑になるとこちらの方法がいいでしょう。
正規表現でマッチするかどうかテストする方法です。
(動作は確認してません)

String aaa = "0123456789";

// 与えられた文字列が 10桁以上11桁までで数字である場合 true
if(aaa.matches("^[0-9]\{10,11\}$")) {
// 数字に一致した場合の処理
}
else {
// 一致しなかった場合の処理
}

正規表現自体は ファイル名に使うワイルドカード(*.java とか ??.html みたいな)をもっと複雑にしたものです。
ここでは書ききれませんので、興味あれば調べてください。
    • good
    • 0

入門書などによくある書き方で、Integer.parseInt(String s)メソッドを使う方法があります。


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

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