JAN8 は 7 桁の文字列から JAN13 は 12 桁の文字列からそれぞれ Check Digit を作成します。
コード
public static String makeCheckDigit(String barcode) {
int initPosition1 = 0;
int initPosition2 = 0;
if (barcode.length() == 12) {
initPosition1 = 1;
initPosition2 = 0;
} else if (barcode.length() == 7) {
initPosition1 = 0;
initPosition2 = 1;
} else {
throw new IllegalArgumentException(
"長さが不正です。[" + barcode + "]");
}
int sum = 0;
for (int i = initPosition1; i < barcode.length(); i += 2) {
sum += Integer.parseInt(barcode.substring(i, i + 1));
}
sum *= 3;
for (int i = initPosition2; i < barcode.length(); i += 2) {
sum += Integer.parseInt(barcode.substring(i, i + 1));
}
String placeOfOne = String.valueOf(sum).substring(
String.valueOf(sum).length() - 1);
if (placeOfOne.equals("0")) {
return placeOfOne;
} else {
return String.valueOf(10 - Integer.parseInt(placeOfOne));
}
}