public class CheckDigitUtil { #チェックデジット生成 (モジュラス11 ウェイト2~7)
private static final int MOJURAS11_MAX_WEIGHT = 7;
private static final int MOJURAS11_MIN_WEIGHT = 2;
private static final int MOJURAS11_MOJURAS_VALUE = 11;
public static int mojuras11(long n) {
int sum = 0;
int x = MOJURAS11_MIN_WEIGHT;
do {
sum += ((n % 10) * x);
x = (MOJURAS11_MAX_WEIGHT == x) ? MOJURAS11_MIN_WEIGHT : ++x;
} while ((n = n / 10) != 0);
int mod = sum % MOJURAS11_MOJURAS_VALUE;
return (mod == 1) ? 0 : MOJURAS11_MOJURAS_VALUE - mod;
}
}