我现在在开发阶段使用了一个简单的校验位计算器。校验位取决于帐号和常数乘数2187654321。帐号为字符串格式。我需要将它拆分成整数数组。然后每个整数都需要分别乘以它们的乘数。
假设帐号是 08060002506。那么这个过程就是2x0 + 1x8 + 8x0...
我的问题是,是否有人可以建议是否有更多优化方法来进行计算?因为我将对大约数千个帐户进行计算。
这是我的代码
import java.util.Arrays;
class CheckDigit {
public static void main(String[] args) {
String accountNo = "08060002506";
Integer[] multiplier = new Integer[]{2, 1, 8, 7, 6, 5, 4, 3, 2, 1};
Object[] accountNoArr = convertAccountToIntArray(accountNo);
int sum = getSum(multiplier, accountNoArr);
int remainder = getRemainder(sum);
int checkDigit = 9 - remainder;
System.out.println("Check digit is = " + checkDigit);
}
private static Object[] convertAccountToIntArray(String accountNo) {
return Arrays.stream(accountNo.split(""))
.map(Integer::parseInt).toArray();
}
private static int getSum(Integer[] multiplier, Object[] accountNoArr) {
int sum = 0;
for (int i = 0, multiplierLength = multiplier.length; i < multiplierLength; i++) {
Integer numToMultiply = (Integer) accountNoArr[i];
Integer mul = multiplier[i];
sum += mul * numToMultiply;
}
return sum;
}
private static int getRemainder(int sum) {
return sum % 9;
}
}
largeQ
慕哥6287543
慕标5832272
相关分类