何をテーマにして記事を書こうかな~と悩んでいたところ、ちょうど目の前に
バーコードがありました。そこで思いついたのがチェックディジットだったので、チェックディジットの計算法をプログラムで書こうと思いました。
チェックディジットとは?
読み誤りがないかチェックするために、算出された数値で、バーコードデータの最後につけられます。
書いたコード
import java.util.Scanner;
public class qita {
public static void main(String[] args) throws Exception{
Scanner stdIn = new Scanner(System.in, "Shift_JIS");
System.out.println("13桁のバーコードの数字を入れてください。");
String A = stdIn.next();
int a=1 ,c=0;
for(int i=A.length()-2;i>=0;i--){
int suji = Character.getNumericValue(A.charAt(i));
if(a%2==0){
c=c+suji;
}
else
c=c+suji*3;
a++;
}
int digit=10-(c%10);
if (digit == 10) {
digit = 0;
}
System.out.println("出たこたえは"+digit+"です。");
int ADigit = Character.getNumericValue(A.charAt(A.length() - 1));
if (ADigit == digit) {
System.out.println("バーコードのチェックディジットと計算が合いました。おめでとうございます。");
}
else {
System.out.println("バーコードのチェックディジットと計算が合いませんでした。間違っていますよ。");
}
}
}
int suji = Character.getNumericValue(A.charAt(i));の部分は入力した文字列Aのi番目の文字を整数値に変換しています。ここは調べて書きました..。
もっと良い書き方や省略があると思うのでそのようなところを修正し、学んでいきたいです。12桁や8桁などいいろいろありますが、今回は13桁だけの計算にしました。ほかのも追加出来たらなと思います。
セルフレジやバーコード決済など最近はバーコードに触れる機会が多くなっているなと感じているので、バーコードについての知識を身に着けていることも有りかと思いますね。
参考にしたサイト↓