题目:
生成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)
实现上述代码的功能,计算验证码,输入12位条码,返回带验证码的条码。
例:输入:692223361219 输出:6922233612192
import java.util.Scanner;
class TiaoXingMa
{
public static void main(String[] args)
{
Scanner scan = new Scanner(System.in);
System.out.println("请依次输入前12位条码:");
int oddBitSum = 0;
int evenBitSum = 0;
long Tma = 0L;
for (int i=1; i<13; i++)
{
int num = scan.nextInt();
Tma = Tma * 10l + (long)num;
if (num > 9 || num < 0)
{
System.out.println("每次只能输入一位0-9的数,请从第一位开始重新输入!");
break;
}
if (i % 2 == 0)
{
evenBitSum += num;
}
else
{
oddBitSum += num;
}
}
System.out.println("前12个数为:"+Tma);
int threeAdd = oddBitSum + evenBitSum * 3;
int geweishu = threeAdd % 10;
int jiaoYanMa = 0;
if (geweishu != 0)
{
jiaoYanMa = 10 - geweishu;
}
Tma = jiaoYanMa + Tma * 10;
System.out.println("完整的条形码为:"+Tma);
}
}



