java实现13位条形码的生成

题目描述

  生成13位条形码
   Ean-13码规则:第十三位数字是前十二位数字经过计算得到的校验码。
   例如:690123456789
   计算其校验码的过程为:
   前十二位的奇数位和6+0+2+4+6+8=26
   前十二位的偶数位和9+1+3+5+7+9=34
   将奇数和与偶数和的三倍相加26+34*3=128
   取结果的个位数:128的个位数为8
   用10减去这个个位数10-8
   所以校验码为2
   (注:如果取结果的个位数为0,那么校验码不是为10(10-0=10),而是0)
   实现方法ean13()计算验证码,输入12位条码,返回带验证码的条码。
   例:输入:692223361219输出:6922233612192

 基本思路

首先要使用Scanner接收一个十二位的整数,十二位整数要用long型。

若想计算奇数和与偶数和,就必须把这个十二位数的每一位都单独取出来,取出之后可以用数组存放,之后遍历数组计算奇数和与偶数和。

代码实现

package HomeWork;

import java.util.Scanner;

/**
* @Author: lly
* @Description:         生成13位条形码
 *                          Ean-13码规则:第十三位数字是前十二位数字经过计算得到的校验码。
 *                          例如:690123456789
 *                              计算其校验码的过程为:
 *                              前十二位的奇数位和6+0+2+4+6+8=26
 *                              前十二位的偶数位和9+1+3+5+7+9=34
 *                              将奇数和与偶数和的三倍相加26+34*3=128
 *                              取结果的个位数:128的个位数为8
 *                              用10减去这个个位数10-8
 *                              所以校验码为2
 *                              (注:如果取结果的个位数为0,那么校验码不是为10(10-0=10),而是0)
 *                              实现方法ean13()计算验证码,输入12位条码,返回带验证码的条码。
 *                              例:输入:692223361219输出:6922233612192
* @DateTime: 2022/7/20 20:51
**/
public class Work27 {
    public static void main(String[] args) {
        long[] nums = new long[20];
        Scanner sc= new Scanner(System.in);
        System.out.print("请输入一串十二位数:");
        long code = sc.nextLong();
        int index = 0;
        int count=0;
        int evenSum=0;
        int oddSum=0;
        for ( long i =code ;i>0;i/=10 ,index++){
            long  a = i%10;
            nums[index]=a;
            count++;
        }
        for (int i = 0; i <= count; i++) {
            if (nums[i]%2==0){
                evenSum+=nums[i];
            }else {
                oddSum+=nums[i];
            }
        }

        int num3= evenSum+oddSum*3;
        int gw = num3%10;
        int checkCode = 10-gw;
        long okCode = code*10+checkCode;
        System.out.print("生成的条形码为:");
        System.out.println(okCode);

    }
}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
实现生成条形码,可以使用Java开源库ZXing(Zebra Crossing)。 以下是一个简单的Java代码示例,演示如何使用ZXing库来生成条形码: ```java import java.io.File; import java.io.IOException; import java.util.HashMap; import java.util.Map; import javax.imageio.ImageIO; import com.google.zxing.BarcodeFormat; import com.google.zxing.EncodeHintType; import com.google.zxing.MultiFormatWriter; import com.google.zxing.WriterException; import com.google.zxing.common.BitMatrix; import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel; public class BarCodeGenerator { public static void main(String[] args) { String data = "123456789"; String path = "barCode.png"; int width = 300; int height = 100; String format = "png"; Map<EncodeHintType, Object> hints = new HashMap<>(); hints.put(EncodeHintType.CHARACTER_SET, "UTF-8"); try { BitMatrix bitMatrix = new MultiFormatWriter().encode(data, BarcodeFormat.CODE_128, width, height, hints); File file = new File(path); ImageIO.write(toBufferedImage(bitMatrix), format, file); } catch (WriterException | IOException e) { e.printStackTrace(); } } private static final int BLACK = 0xFF000000; private static final int WHITE = 0xFFFFFFFF; private static BufferedImage toBufferedImage(BitMatrix matrix) { int width = matrix.getWidth(); int height = matrix.getHeight(); BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); for (int x = 0; x < width; x++) { for (int y = 0; y < height; y++) { image.setRGB(x, y, matrix.get(x, y) ? BLACK : WHITE); } } return image; } } ``` 运行以上代码,将生成一个名为“barCode.png”的文件,其中包含数据“123456789”的条形码。 在代码中,我们使用CODE_128格式生成条形码,这是一种广泛使用的条形码类型,适用于包含数字和字母的文本数据。我们还可以通过使用其他BarcodeFormat常量来生成其他类型的条形码,例如QR_CODE和PDF_417。 我们还可以使用ZXing库来读取条形码

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

重生之我是泰勒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值