2017-10-27 9 views
0

をint型が、店を受け入れ、これは私が、私は、ユーザーがString userPhoneに入ったかどうかを確認する必要が把握傾けるだけの部分が整数ユーザー入力を作ることだけで私のプログラムが行わガットストリング

System.out.println("Please enter your phone number (10-dights only)"); 
     String userNumber=sc.nextLine(); 

     while(true) { 
      if (userNumber.length()==10) { 
       order01.cust1.setPhoneNumber(userNumber); 
       break; 
      } 
      else if (userNumber.length()!=10) { 
       System.out.println("Invalid phone number, Enter a valid one"); 
      } 
      userNumber=sc.nextLine(); 
     } 
+1

あなたがでhttps://stackoverflow.com/questions/123559/a-comprehensive-regex-for-phone-number-validation?noredirect=1&lq=1を見てみることをお勧めします電話番号のパターンと一致するよう具体的に探している場合。 – nullpointer

答えて

0

数字のチェックマッチング。文字列のmatches()メソッドは正規表現を取ります。ここで\ d *はすべての文字を数字で表す必要があります。それ以前は長さもチェックしています。

while(true) { 
     if (userNumber.length()==10 && userNumber.matches("\\d*")) { 
      System.out.println(userNumber); 
      break; 
     } 
     else if (userNumber.length()!=10 || !userNumber.matches("\\d*")) { 
      System.out.println("Invalid phone number, Enter a valid one"); 
     } 
     userNumber=sc.nextLine(); 
    } 
+0

@chris this use –

+0

これはあなたにとって便利ですか? –

+0

私はupvoteクリスを得ることができますか? –

0

あなたがあるさという正規表現を使用して、の数字が\d{10}であり、breakの後にelseは必要ないことを確認することができます。同様に、

while(true) { 
    if (userNumber.matches("\\d{10}")) { 
     order01.cust1.setPhoneNumber(userNumber); 
     break; 
    } 
    System.out.println("Invalid phone number, Enter a valid one"); 
    userNumber=sc.nextLine(); 
} 
+0

しかし、この解決方法はuserNumberの長さだけをテストします。文字列に整数だけが含まれていることを検証しないので、有効な数値として「abcdefghiJ」を渡します。 –

+0

@chriscrosby No.「\\ d {10}」は10桁に一致します。 '0-9'。 –

+0

私は間違ったメソッドをテストしていましたが、このソリューションは正しく動作しました –

0

最も簡単で、最も原始的には、(あなたの文字列が唯一の10単位の長であるため)入力文字列をループになると、各インデックスにある文字は、お問い合わせくださいCharacter.isDigit

+0

正規表現をとる文字列メソッドを使用してみてください。 –

0

を使用して数字であるかどうかを確認しますこのリンクへのより多くの情報とオリジナルクレジットのリンク:Original Code

以下の方法で試してみてください。

 public static boolean isNumber(String string) { 
     try { 
      Long.parseLong(string); 
     } catch (Exception e) { 
      return false; 
     } 
     return true; 
     } 

を私はnはあなたのコード:

if (isNumber(userPhone)) { 
     order01.cust1.setPhoneNumber(userNumber); 
     break; 
    } 
+0

これも正常に動作しますが、検証のために正規表現を使用する方が適しています。 –

+1

はい、正規表現を使用する方が良いです、私は答えに最善を尽くしました!! –

関連する問題