写一个程序来验证用户在这些输入的电话号码 格式:
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 ;(");
}
}
}
}
答案 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");
}