编写程序以验证电话号码输入

时间:2019-03-07 05:35:08

标签: java

写一个程序来验证用户在这些输入的电话号码 格式:

  

5149856586

     

(514)985-6586

     

514-985-6586

如果10位数字是这三种格式,则程序应输出"Valid number"。否则,它应该输出"Invalid Number"

程序应继续要求用户输入电话 直到用户键入"exit"为止的数字。

这是我到目前为止的内容,但是当我执行此代码时,它不会显示无效或有效的信息。

任何帮助将不胜感激。

package com.company;

    import java.io.*;
    import java.util.*;

    public class ValidatePhoneNumber2 {
    public static void main(String[] args) {

        int LenPhoneNumber = 15;


            Scanner kb = new Scanner(System.in);
            System.out.println("ENTER PHONE NUMBER:");
            char CharPhoneNumber[] = kb.nextLine().toCharArray();
            boolean ValidPhoneNumber = false;
            LenPhoneNumber = CharPhoneNumber.length;
            boolean Validlen = false;
            int i = 0;
            int countnum = 0;
            char Numberp1 = '-';
            char Numberp2 = '(';
            char Numberp3 = ')';

         while (LenPhoneNumber > 2) {
            if ((LenPhoneNumber == 10) || (LenPhoneNumber == 12) || (LenPhoneNumber == 13)) {
                Validlen = true;
            } else {
                System.out.println("Phone Number Entered is NOT valid ;( ");
            }

            if (Validlen == true) {
                for (i = 0; i < LenPhoneNumber; i++) {
                    if (Character.isDigit(CharPhoneNumber[i])) {
                        countnum = countnum + 1;
                    }
                }
            }

            if (countnum != 10) {
                System.out.println("Phone Number Entered is NOT valid ;( ");
            }

            if ((Validlen == true) && (countnum == 10) && (LenPhoneNumber == 10)) {
                System.out.println("Phone Number Entered is valid");
            }

            if ((Validlen == true) && (countnum == 10) && (LenPhoneNumber == 12) &&
                    (CharPhoneNumber[4] == Numberp1) && (CharPhoneNumber[8] == Numberp1)) {
                System.out.println("Phone Number Entered is valid");
            } else {
                System.out.println("Phone Number Entered is NOT valid");
            }

            if ((Validlen == true) && (countnum == 10) && (LenPhoneNumber == 13) &&
                    (CharPhoneNumber[0] == Numberp2) && (CharPhoneNumber[4] == Numberp3) &&
                    (CharPhoneNumber[8] == Numberp1)) {
                System.out.println("Phone Number Entered is valid ;)");
            } else {
                System.out.println("Phone Number Entered is NOT valid ;(");
            }
        }
    }
}

2 个答案:

答案 0 :(得分:1)

这确实是正则表达式非常适合的问题。考虑使用以下正则表达式模式进行验证:

\d{10}|\(\d{3}\)\d{3}-\d{4}|\d{3}-\d{3}-\d{4}

以下是如何在String#matches()中使用模式的示例:

String number = "(514)985-6586";
String pattern = "\\d{10}|\\(\\d{3}\\)\\d{3}-\\d{4}|\\d{3}-\\d{3}-\\d{4}";
if (number.matches(pattern)) {
    System.out.println("MATCH");
}
else {
    System.out.println("NO MATCH");
}

答案 1 :(得分:0)

您需要将3个模式与“ |”组合为您指定了三种格式,并通过Java中的正则表达式进行验证。

String pattern = "\\d{10}|(?:\\d{3}-){2}\\d{4}|\\(\\d{3}\\)\\d{3}-?\\d{4}";
 if (Pattern.compile(pattern).matcher(yourString).matches()) {
    System.out.println("Valid");
} else {
    System.out.println("Invalid");
} 
相关问题