アプレットで簡単な電話帳を作成しています。
電話帳の個人データの追加には氏名、電話番号を入力するというシンプルな作りなのですが、
電話番号として入力した文字列に数字(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);
}
}
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.2
- 回答日時:
String.matches(String regex) が使えます。
このような簡単なマッチングの場合は
#1さんの方法でも大丈夫です。
複雑になるとこちらの方法がいいでしょう。
正規表現でマッチするかどうかテストする方法です。
(動作は確認してません)
String aaa = "0123456789";
// 与えられた文字列が 10桁以上11桁までで数字である場合 true
if(aaa.matches("^[0-9]\{10,11\}$")) {
// 数字に一致した場合の処理
}
else {
// 一致しなかった場合の処理
}
正規表現自体は ファイル名に使うワイルドカード(*.java とか ??.html みたいな)をもっと複雑にしたものです。
ここでは書ききれませんので、興味あれば調べてください。
No.1
- 回答日時:
入門書などによくある書き方で、Integer.parseInt(String s)メソッドを使う方法があります。
int i = Integer.parseInt("123");
というように、引数に文字を指定してint型(つまり数値)の値に変換して返すメソッドです。
上の例ではiに、123が入ります。
int i = Integer.parseInt("0132a");
とした場合、数値には変換できないのでNumberFormatExceptionという例外が発生します。
※例外処理を行う必要があるので、そこは学習する必要がありますが…
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java Java 南京錠 2 2023/02/04 11:46
- Java java 次の機能を有するメソッドを自クラスに作成し、実装したいです。 機能 名前判定機能 →名前が 3 2022/06/16 16:08
- その他(動画サービス) u-nextの31日間無料体験に申し込むためのdアカウントの電話番号登録について 3 2022/08/27 00:29
- その他(プログラミング・Web制作) 入力フォームへ、データを自動的に入力するプログラム。どうやって作る? 4 2023/01/16 10:24
- Android(アンドロイド) メルカリでスマホを売る場合 IMEIを記載した方がいいですか 二つありますが どちらでもいいですか 3 2023/02/07 18:35
- 固定電話・IP電話・FAX 電話番号ではない数字の羅列(例えば、郵便物の追跡番号等)を入力し発信するとどうなりますか? 5 2023/04/01 14:59
- Excel(エクセル) 関数EXACT(文字列,文字列)とexcelVBA 3 2022/04/14 15:07
- X(旧Twitter) 教えてgooの新規アカウント登録について 3 2023/03/28 23:42
- iPhone(アイフォーン) LINEについて LINEの知り合いかも❓ で、電話番号で友達追加されましたというのは、なぜ友達追加 5 2022/09/25 21:30
- X(旧Twitter) 【至急】twitterを乗っ取られたのでしょうか? 1 2022/09/08 02:34
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「タイプ初期化子が例外をスロ...
-
0除算の例外処理ができない!!...
-
【JAVA】与えられた金額を貨幣...
-
C#の捕捉されない例外処理の対...
-
数字か文字列かを判定する関数
-
VB.Net Object型 空かどうか
-
文字列からダブルクオートの削除
-
VBA Evaluate関数 型が一致しま...
-
C# UriFormatExceptionの回避
-
WebClient()以外でネットにアク...
-
初回例外
-
WMIスクリプトを使用してMACア...
-
nullで、return出来るのはどん...
-
Timestamp型への変換について(J...
-
時間を表す文字列を時刻に変換
-
改行コード(\\n)を削除したい場合
-
例外処理throws
-
エクセルVBAで、条件に一致する...
-
変数名の付け方
-
mainメソッドのthrows節で設定...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「タイプ初期化子が例外をスロ...
-
VB.Net Object型 空かどうか
-
文字列からダブルクオートの削除
-
連続する「\\」をひとつの「\\...
-
例外ってIf文の中に入れますか...
-
nullで、return出来るのはどん...
-
C#の捕捉されない例外処理の対...
-
0除算の例外処理ができない!!...
-
VB.NETで16進数が正しいかどう...
-
VBA 400エラー 1004エラー
-
Timestamp型への変換について(J...
-
VC++におけるCStringの変換
-
String型の日付(2005/11/25)の...
-
時間の取得
-
サーブレットからJSPの呼び出し...
-
アロー関数のIE対応にpolyfill...
-
【JAVA】与えられた金額を貨幣...
-
C# UriFormatExceptionの回避
-
WebClient()以外でネットにアク...
-
Excelでのエラー
おすすめ情報