3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

何をテーマにして記事を書こうかな~と悩んでいたところ、ちょうど目の前にIMG_8440.JPG
バーコードがありました。そこで思いついたのがチェックディジットだったので、チェックディジットの計算法をプログラムで書こうと思いました。

チェックディジットとは?
読み誤りがないかチェックするために、算出された数値で、バーコードデータの最後につけられます。

書いたコード

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番目の文字を整数値に変換しています。ここは調べて書きました..。

実行結果
スクリーンショット 2024-11-27 000749.png
スクリーンショット 2024-11-27 000801.png

もっと良い書き方や省略があると思うのでそのようなところを修正し、学んでいきたいです。12桁や8桁などいいろいろありますが、今回は13桁だけの計算にしました。ほかのも追加出来たらなと思います。
セルフレジやバーコード決済など最近はバーコードに触れる機会が多くなっているなと感じているので、バーコードについての知識を身に着けていることも有りかと思いますね。

参考にしたサイト↓

3
1
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?