2017-02-22 1 views
-1

私のプログラムは現在、10の連続した数字と文字である場合にのみ電話番号を検証し、「終了」という単語が入力されたときに閉じます。しかし、私はあなたが本当の検証を行うことでそれを行う彼らはまた、両方の、例えば、(123)456-7890および123-456-7890いくつかのバリエーションの電話番号入力を検証するにはどうすればよいですか?

import java.util.Scanner; 
public class Q2 
{ 
    public static void main(String[] args){ 
    Scanner kb=new Scanner(System.in); 
    while (true){ 
     System.out.print("Enter your phone number: "); 
     String number=kb.next(); 
     if(number.equals("exit")){ 
      System.exit(0); 
     } 
    boolean valid=true; 
    for(int i=0;i<number.length();i++){ 
     if(number.length()!=10) valid=false; 
    } 
    if (valid) System.out.println("It is valid"); 
    else System.out.println("It is invalid"); 
    } 
    } 
} 
+0

ジャスト[正規表現](http://www.vogella.com/tutorials/JavaRegularExpressions/article.htmlを) –

答えて

0

として書かれていた場合、私は数字を検証することができるか疑問に思いました。

意味:「検証」は、入力をのルールセットに対してチェックするプロセスを示します。入力がすべての規則に準拠する場合は有効です。それ以外の場合はそうではありません。

はい、長さを確認するのが最初の単純なルールでした。しかし、「長さは10です」...良いルールではないことが判明しました。たとえば、 "123456A90"の長さは10です。無効です。 試合あなたの入力文字列ならば(NNNのような特定のパターンを決定するために、

  • 使用正規表現(またはプレーン文字列解析):

    あなたの代わりに何ができるか(あなたにいくつかのアイデアを与えます) -nnnn-nnnn)

  • 単純な(不要な)すべての文字を、() - ""で置き換えます。結果の文字列の長さが10かどうかを確認します。

    したがって、答えは次のとおりです。入力をよく見て、が有効なの電話番号が共通するプロパティを確認します。そして、それらをチェックするためのコードを書くことになります。

+0

私は唯一の有効な解決策はあなたの最初の弾丸だと思います:正規表現。 2つ目は0(-1 --- 2)のような電話番号を受け取ります(3456789 –

+0

@bra_racing)常に良い方法でreplaceAll()を実行すると、ポイントは:彼は初心者ですので、ここでは正規表現を使用することに焦点を当てると、そのような問題が提供する多くの「多様性」を取り除きます。オプションのスペースを理解して探検することをお勧めします; – GhostCat

+0

私はちょうどよいパターンを制御することなく単純な置き換えは有効な解決策ではないことを指摘しましたが、もちろん、ここでキーは対処していますちょうど調査とプログラミングの問題 –

0

あなたは、単にこのように、そのより強力な正規表現を使用していない理由:

public static void main(String[] args) { 
    System.out.println("123-456-7890 is valid? " + valider("123-456-7890")); 
    System.out.println("(123)456-7890 is valid? " + valider("(123)456-7890")); 
} 

private static boolean valider(String phoneNumber) { 
    if (phoneNumber.matches("\\d{3}[-\\.\\s]\\d{3}[-\\.\\s]\\d{4}")) { 
     return true; 
    } else return phoneNumber.matches("\\(\\d{3}\\)\\d{3}-\\d{4}"); 
} 
関連する問題