Ali*_*ali 6 java validation android
我需要一种方法来验证伊朗人的Melli Code(National Code或Code Melli).
我知道它有一个公式.
Ali*_*ali 11
这种方法验证了伊朗人的melli代码.
public boolean validateMelliCode(String melliCode) {
String[] identicalDigits = {"0000000000", "1111111111", "2222222222", "3333333333", "4444444444", "5555555555", "6666666666", "7777777777", "8888888888", "9999999999"};
if (melliCode.trim().isEmpty()) {
Toast.makeText(getApplicationContext(), "Melli Code is empty", Toast.LENGTH_LONG).show();
return false; // Melli Code is empty
} else if (melliCode.length() != 10) {
Toast.makeText(getApplicationContext(), "Melli Code must be exactly 10 digits", Toast.LENGTH_LONG).show();
return false; // Melli Code is less or more than 10 digits
} else if (Arrays.asList(identicalDigits).contains(melliCode)) {
Toast.makeText(getApplicationContext(), "MelliCode is not valid (Fake MelliCode)", Toast.LENGTH_LONG).show();
return false; // Fake Melli Code
} else {
int sum = 0;
for (int i = 0; i < 9; i++) {
sum += Character.getNumericValue(melliCode.charAt(i)) * (10 - i);
}
int lastDigit;
int divideRemaining = sum % 11;
if (divideRemaining < 2) {
lastDigit = divideRemaining;
} else {
lastDigit = 11 - (divideRemaining);
}
if (Character.getNumericValue(melliCode.charAt(9)) == lastDigit) {
Toast.makeText(getApplicationContext(), "MelliCode is valid", Toast.LENGTH_LONG).show();
return true;
} else {
Toast.makeText(getApplicationContext(), "MelliCode is not valid", Toast.LENGTH_LONG).show();
return false; // Invalid MelliCode
}
}
}
Run Code Online (Sandbox Code Playgroud)
这个真实的通讯社说有一个男人有"1111111111"国家代码.我认为我们必须接受由重复数字组成的国家代码.所以我们不需要这个数组:
String[] identicalDigits = {"0000000000", "1111111111", "2222222222", "3333333333", "4444444444", "5555555555", "6666666666", "7777777777", "8888888888", "9999999999"};
Run Code Online (Sandbox Code Playgroud)
而且我们也不需要这部分条件:
else if (Arrays.asList(identicalDigits).contains(melliCode)) {
Toast.makeText(getApplicationContext(), "MelliCode is not valid (Fake MelliCode)", Toast.LENGTH_LONG).show();
return false; // Fake Melli Code
}
Run Code Online (Sandbox Code Playgroud)
祝好运!
Alireza 干得好,这是我的代码,与您的代码非常相似。
???
private boolean isValidNationalCode(String nationalCode) {
if (nationalCode.length() != 10) {
return false;
} else {
//Check for equal numbers
String[] allDigitEqual = {"0000000000", "1111111111", "2222222222", "3333333333",
"4444444444", "5555555555", "6666666666", "7777777777", "8888888888", "9999999999"};
if (Arrays.asList(allDigitEqual).contains(nationalCode)) {
return false;
} else {
int sum = 0;
int lenght = 10;
for (int i = 0; i < lenght - 1; i++) {
sum += Integer.parseInt(String.valueOf(nationalCode.charAt(i))) * (lenght - i);
}
int r = Integer.parseInt(String.valueOf(nationalCode.charAt(9)));
int c = sum % 11;
return (((c < 2) && (r == c)) || ((c >= 2) && ((11 - c) == r)));
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1820 次 |
| 最近记录: |