题目
生成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
所以校验码为2
(注:如果取结果的个位数为0,那么校验码不是为10(10-0=10),而是0)
实现方法ean13()计算验证码,输入12位条码,返回带验证码的条码。
例:输入:692223361219输出:6922233612192
代码
import java.util.Scanner;
public class Demo00 {
public static void main(String[] args) {
System.out.println("请输入十二位为条码");
Scanner sc = new Scanner(System.in);
long number = sc.nextLong();
long number2 = number;
long[] array = new long[12];
for (int i = 0; i < 12; i++) {
array[i] = number % 10;
number /= 10;
}
int oddSum = 0;// 奇数
int evenSum = 0;// 偶数
// 奇数和
for (int i = 0; i < 12; i = i + 2) {
oddSum += array[i];
}
// 偶数和
for (int j = 1; j < 12; j = j + 2) {
evenSum += array[j];
}
int threeSum = oddSum * 3 + evenSum;
int geWei = threeSum % 10;
int jiaoYan = 0;
if (geWei != 0)//判断最后是否为0 不是被10减 是不变
jiaoYan = 10 - geWei;
long number3 = number2 * 10 + jiaoYan;
System.out.println(number3);
}
}