チェックデジット計算処理をします。(モジュラス11用)
<p>
1.チェックデジット対象文字列を個々の数値に分解しウェイトを掛ける<br>
2.ウェイト掛けた後の数値をすべて足す。<br>
3.足した結果をモジュラス(11)で割り余りを求める<br>
4.チェックデジットを求める<br>
4-1.<br>
<br>
<br>
@param value
@param maxlength
@return
public static String getCheckDigitModulus11(String value) {
value = reverse(value);
int maxlength = value.length();
String checkDigitValue = null;
long modulus11 = 11;
long divisions[] = new long[maxlength];
for (int i = 0; i < maxlength; i++) {
long division = 0;
division = Long.parseLong(value.substring(i, i+1));
divisions[i] = division * (i % 6 + 2);
}
long plusValue = 0;
for (int i = 0; i < maxlength; i++) {
plusValue = plusValue + divisions[i];
}
long remainder = 0;
remainder = plusValue % modulus11;
if (remainder == 0 || remainder == 1) {
checkDigitValue = String.valueOf(0);
} else {
checkDigitValue = String.valueOf(11 - remainder);
}
return checkDigitValue;
}
文字列を逆順にして返す
@param str
@return
public static String reverse(String str) {
String ret = "";
int length = str.length();
for(int i = length - 1; i >= 0; i--) {
ret += str.charAt(i);
}
return ret;
}