• 每日练习------生成13位条形, Ean-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

            所以校验码为2

            (注:如果取结果的个位数为0,那么校验码不是为10(10-0=10),而是0)

            实现方法ean13()计算验证码,输入12位条码,返回带验证码的条码。

            例:输入:692223361219输出:6922233612192

    解题关键:12个数字需要一个个单独输出,然后进行单独判断,最后再进行校验数的判断

    思路:1)依次输入12位数字

            2)创建一个long类型来包含输入的数字

            3)把输入的数字加入long类型

            4)判断输入的数字

            5)输出12位数字

            6)判断第13位的校验数

            7)第十三位数加入long类型中

    过程: 接下来我们根据我们的解题思路来一步步写代码

            1)依次输入12位数字
            Scanner sc = new Scanner(System.in);
            System.out.println("请您依次12位条码:");
            int sumOuShuWei = 0;
            int sumJiShuWei= 0;
            2)创建一个long类型来包含输入的数字
            long all12 = 0L;
            for(int i = 1; i < 13; i++){
                System.out.println("请您输入第" + i + "位数字");
                int num = sc.nextInt();
              3)把输入的数字加入long类型
                all12 = all12 * 10l + (long)num;
               4)判断输入的数字
                if(num<0||num>9){
                    System.out.println("请输入0~9直接的整数");
                }
                if(num %2 == 0){
                    sumJiShuWei+= num;
                }else{
                    sumOuShuWei += num;
                }
            }
           5)输出12位数字
            System.out.println("12数位:" + all12);
            6)判断第13位的校验数
            int sumJiOu = sumJiShuWei+sumOuShuWei*3;
            int geWei = sumJiOu % 10;
            int jiaoYanMa = 0;
            if(geWei != 0){
                jiaoYanMa = 10 -geWei;
            }
            7)第十三位数加入long类型中
            all12 = all12*10 + jiaoYanMa;
            System.out.println("13位数位:" + all12);

    完整结果如下:

     为了方便大家使用,下面附上源码:

    1. //1)依次输入12位数字
    2. Scanner sc = new Scanner(System.in);
    3. System.out.println("请您依次12位条码:");
    4. int sumOuShuWei = 0;
    5. int sumJiShuWei= 0;
    6. //2)创建一个long类型来包含输入的数字
    7. long all12 = 0L;
    8. for(int i = 1; i < 13; i++){
    9. System.out.println("请您输入第" + i + "位数字");
    10. int num = sc.nextInt();
    11. //3)把输入的数字加入long类型
    12. all12 = all12 * 10l + (long)num;
    13. //4)判断输入的数字
    14. if(num<0||num>9){
    15. System.out.println("请输入0~9直接的整数");
    16. }
    17. if(num %2 == 0){
    18. sumJiShuWei+= num;
    19. }else{
    20. sumOuShuWei += num;
    21. }
    22. }
    23. //5)输出12位数字
    24. System.out.println("12数位:" + all12);
    25. //6)判断第13位的校验数
    26. int sumJiOu = sumJiShuWei+sumOuShuWei*3;
    27. int geWei = sumJiOu % 10;
    28. int jiaoYanMa = 0;
    29. if(geWei != 0){
    30. jiaoYanMa = 10 -geWei;
    31. }
    32. //7)第十三位数加入long类型中
    33. all12 = all12*10 + jiaoYanMa;
    34. System.out.println("13位数位:" + all12);

    总结:

            这道题目的关键在于依次输入12个数字,当然了肯定还有更简单的方法来写这道题目,这道题我的解法使用一个long类型来接受数据,用嵌入循环来写的这道题.

    明日练习:随机产生一个1-100之间的整数,看能几次猜中。要求:猜的次数不能超过7次,每次猜完之后都要提示“大了”或者“小了”。

    大家可以自己写写,明天中午12点我准时发出我的写法哦,明天12点不见不散

     一生朋友一生情,一生有你才会赢;千山万水总是情,点个关注行不行!

  • 相关阅读:
    【高级RAG技巧】在大模型知识库问答中增强文档分割与表格提取
    xml里面<foreach>标签用法
    Infineon+EB构建MCAL驱动包Demo实现片内外设使用
    DevOps与CI/CD常见面试问题汇总
    51单片机汇编-点亮一个led
    Python 用列表实现模拟手机通讯录(简易版)
    修改echarts的tooltip样式 折线图如何配置阴影并实现渐变色和自适应
    WebSocket的原理与优缺点
    Java 枚举
    Hyperledger Fabric 智能合约开发及 fabric-sdk-go/fabric-gateway 使用示例
  • 原文地址:https://blog.csdn.net/SSSS__AS/article/details/125997181