计算校验位的步骤如下:
将最右边一个数位作为“奇数”位,从右向左为每个字符指定奇数/偶数位。
对所有奇数位上的数值求和,将结构乘以3。
对所有偶数位上的数值求和。
对第2步和第3步计算的结果求和。
校验位的数字加上用第4步计算的总和数应该能够被10整除。
如果第4步计算的总和数能够被10整除,校验位就是“0”(不是10)
简单来说,EAN13码前12位是主码,最后一位是检验码,通过上述的运算得到的结果跟最后的检验码相同则说明检验成功。也就是针对前12位主码的运算。
代码如下:
初学者,代码很粗糙,随便看看就好。
import java.util.Scanner;
public class ForDemo {
public static void main(String[] args) {
// String str ="6923790799135";
System.out.println("请输入一个13位的数字");
Scanner con = new Scanner(System.in);
String str = con.nextLine();
int sum = 0;
for(int i =1;i<12;i+=2){
sum+=(str.charAt(i)-'0');
}
// System.out.println(sum);
// int sum1 =sum*3;
int sum2 =0;
for(int i = 0;i<12;i+=2){
sum2 += (str.charAt(i)-'0');
}
// System.out.println(sum2);
int count =sum*3+sum2;
System.out.println(count);
if(10-count%10==(str.charAt(12)-'0')){
System.out.println("扫码成功");
}else{
System.out.println("重新扫码");
}
}
}
本文介绍了EAN13条形码的校验位计算步骤,包括将数字按奇偶位分组求和,再进行特定计算确保总和能被10整除。同时,提供了一段简单的代码实现,帮助初学者理解该过程。

3217

被折叠的 条评论
为什么被折叠?



