编写一段java代码使用Luhn算法校验手机号是否合法
时间: 2024-02-21 17:33:39 浏览: 28
下面是使用Luhn算法校验手机号是否合法的Java代码:
```
public boolean isPhoneNumberValid(String phoneNumber) {
String digitsOnly = phoneNumber.replaceAll("[^0-9]", ""); // 去掉手机号中的非数字字符
int sum = 0;
boolean isOdd = true;
for (int i = digitsOnly.length() - 1; i >= 0; i--) {
int digit = Integer.parseInt(digitsOnly.substring(i, i + 1));
if (isOdd) {
sum += digit;
} else {
sum += digit < 5 ? digit * 2 : digit * 2 - 9;
}
isOdd = !isOdd;
}
return sum % 10 == 0;
}
```
该方法会返回一个布尔值,指示给定的手机号是否合法。如果返回值为 true,表示手机号是合法的。如果返回值为 false,则该手机号无效。
相关问题
使用Java代码实现基于Luhn算法校验身份证号是否合法
好的,这是一个技术问题,我可以回答你。以下是一个基于Java的实现代码:
```
public boolean checkID(String id) {
if (id.length() != 18) {
return false;
}
int sum = 0;
int factor = 1;
for (int i = 17; i >= 0; i--) {
int digit = Integer.parseInt(id.substring(i, i + 1));
sum += digit * factor;
factor = factor * 2 % 11;
}
int remainder = (12 - sum % 11) % 11;
char[] c = {'1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'};
return c[remainder] == id.charAt(17);
}
```
这段代码基于Luhn算法实现了对身份证号码的校验。
如何使用Luhn算法校验身份证号
Luhn算法是一种校验和算法,可以用于验证身份证号码的合法性。具体步骤如下:
1. 把身份证号码的前17位数字倒序排列,个位数为第1位,依次类推,第17位为第17位。
2. 从第1位开始,将“奇数位”(即位置数字为1、3、5、7、9、11、13、15、17)上的数字加倍,即如果该数字小于5,则乘以2;如果该数字大于等于5,则先减去5再乘以2。
3. 将第2步中所得的每个数字相加,得到一个总和。
4. 用总和除以10,如果余数为0,则身份证号码合法;否则,不合法。
举个例子,如果身份证号码为320311199205290018,则可按以下步骤进行验证:
1. 将前17位数字倒序排列,得到018920519931023023。
2. 对奇数位的数字进行加倍处理,得到036920718631013023。
3. 将所有数字相加,得到68。
4. 用68除以10,余数为8,因此该身份证号码不合法。
希望以上信息能对您有帮助。