我国大陆运营商的手机号码标准格式为:国家码+手机号码,例如:8613912345678。特点如下:
1)长度13位;
2) 以86的国家码打头;
3)手机号码的每一位都是数字;
请实现手机号码合法性判断的函数(注:考生无需关注手机号码的真实性,也就是说诸如86123123456789这样的手机号码,我们也认为是合法的),要求:
1)如果手机号码合法,返回0;
2)如果手机号码长度不合法,返回1;
3)如果手机号码中包含非数字的字符,返回2;
4)如果手机号码不是以86打头的,返回3;
【注】除成功的情况外,以上其他合法性判断的优先级依次降低。也就是说,如果判断出长度不合法,直接返回1即可,不需要再做其他合法性判断。
public class Test {
/**
*
* 我国大陆运营商的手机号码标准格式为:国家码+手机号码,例如:8613912345678。特点如下:
*
* 1)长度13位;
* 2)以86的国家码打头;
* 3)手机号码的每一位都是数字;
*
* 请实现手机号码合法性判断的函数(注:考生无需关注手机号码的真实性,也就是说诸如86123123456789这样的手机号码,我们也认为是合法的)
*
* 要求: 1)如果手机号码合法,返回0;
* 2)如果手机号码长度不合法,返回1;
* 3)如果手机号码中包含非数字的字符,返回2;
* 4)如果手机号码不是以86打头的,返回3;
*
* 【注】除成功的情况外,以上其他合法性判断的优先级依次降低。也就是说,如果判断出长度不合法,直接返回1即可,不需要再做其他合法性判断。
*/
// 判断有非数字字符
public static boolean checkchar(char[] arr) {
for (char c : arr) {
// Character.isDigit(c)
// 如果字符为数字,则返回 true;否则返回 false.
if (!Character.isDigit(c)) {
return false;
}
}
return true;
}
public static int checknumber(String num) {
// 转换成字符数组
char[] arr = num.toCharArray();
int len = arr.length;
// 判断是否有非数字
boolean isNum = checkchar(arr);
// 小于11位或大于11位返回1
if (len < 11 || len > 13) {
return 1;
} else if (len == 11) {
if (isNum) {
return 3;
} else {
return 2;
}
} else if (len == 13) {
if (isNum) {
// 是否以86开头
if (num.startsWith("86")) {
return 0;
} else {
return 3;
}
} else {
return 2;
}
} else {
// 长度不满足返回1
return 1;
}
}
public static void main(String[] args) {
String num = "8612345678912";
System.out.println(checknumber(num));
}
}