求Java大神给个代码!计算验证条形码
计算验证条形码Ean13Barcode.javaEan-13码规则:第十三位数字是前十二位数字经过计算得到的校验符。例如:690123456789计算其校验符的过程为:前...
计算验证条形码 Ean13Barcode.java
Ean-13码规则:第十三位数字是前十二位数字经过计算得到的校验符。
例如:690123456789
计算其校验符的过程为:
前12位的奇数位的和:6 + 0 + 2 + 4 + 6 + 8 = 26
前12位的偶数位和:9 + 1 + 3 + 5 + 7 + 9 = 34
将奇数和与偶数和的三倍相加:26 + 34 * 3 = 128
取结果的个位数:128的个位数为8
用10减去这个个位数:10 - 8 = 2
所以校验码为2
(注:如果取结果的个位数为0,那么校验码不是为10 (10 - 0 = 10),而是0。)
实现方法ean13()计算验证码,输入12位条码,返回带验证码的条码。
例:
/**
* 生成EAN-13 验证码
* 输入: 692223361219
* 输出: 6922233612192
*/ 展开
Ean-13码规则:第十三位数字是前十二位数字经过计算得到的校验符。
例如:690123456789
计算其校验符的过程为:
前12位的奇数位的和:6 + 0 + 2 + 4 + 6 + 8 = 26
前12位的偶数位和:9 + 1 + 3 + 5 + 7 + 9 = 34
将奇数和与偶数和的三倍相加:26 + 34 * 3 = 128
取结果的个位数:128的个位数为8
用10减去这个个位数:10 - 8 = 2
所以校验码为2
(注:如果取结果的个位数为0,那么校验码不是为10 (10 - 0 = 10),而是0。)
实现方法ean13()计算验证码,输入12位条码,返回带验证码的条码。
例:
/**
* 生成EAN-13 验证码
* 输入: 692223361219
* 输出: 6922233612192
*/ 展开
1个回答
展开全部
public class Ean13Barcode {
private String code;
public Ean13Barcode(String code) {
super();
this.code = code;
}
public String encode() {
if (null == code) {
return "";
}
char[] codes = code.toCharArray();
int sum = 0;
for (int i = 0; i < codes.length; i++) {
int num = codes[i] - '0';
if (isEven(num)) {
sum += num;
} else {
sum += num * 3;
}
}
int x = sum % 10;
return code + (x == 0 ? 0 : 10 - x);
}
private boolean isEven(int x) {
return x % 2 == 0;
}
public static void main(String[] args) {
System.out.println(new Ean13Barcode("692223361219").encode());
}
}
private String code;
public Ean13Barcode(String code) {
super();
this.code = code;
}
public String encode() {
if (null == code) {
return "";
}
char[] codes = code.toCharArray();
int sum = 0;
for (int i = 0; i < codes.length; i++) {
int num = codes[i] - '0';
if (isEven(num)) {
sum += num;
} else {
sum += num * 3;
}
}
int x = sum % 10;
return code + (x == 0 ? 0 : 10 - x);
}
private boolean isEven(int x) {
return x % 2 == 0;
}
public static void main(String[] args) {
System.out.println(new Ean13Barcode("692223361219").encode());
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询