书号验证

2004年起,国际ISBN中心出版了《13位国际标准书号指南》。

原有10位书号前加978作为商品分类标识;校验规则也改变。

校验位的加权算法与10位ISBN的算法不同,具体算法是:

用1分别乘ISBN的前12位中的奇数位(从左边开始数起),用3乘以偶数位,乘积之和以10为模,

10与模值的差值再对10取模(即取个位的数字)即可得到校验位的值,其值范围应该为0~9。

下面的程序实现了该算法,请仔细阅读源码,填写缺失的部分。

PS:

这类填空题都是可找技巧的,经验足够前提下,题目认真分析完,发现代码不长,直接就很容易能看出缺失的是:

缺:用1分别乘ISBN的前12位中的奇数位(从左边开始数起),用3乘以偶数位

至于分析方法,因为代码内只有一个for循环,而却没有算上面的代码,再或者结合变量名sum看出代表的是和,再者从后往前看,(10-sum % 10)%10这行代码与之前题目的描述 :乘积之和以10为模,10与模值的差值再对10取模

所以很确定得到sum代表用 :1分别乘ISBN的前12位中的奇数位(从左边开始数起),用3乘以偶数位

package Lqb;

public class Text31 {
public static void main(String[] args) {
System.out.println(f("978-7-301-04815-3"));
System.out.println(f("978-7-115-38821-6"));
}
static boolean f(String s){
int k=1;
int sum = 0;
for(int i=0; i<s.length(); i++){
char c = s.charAt(i);
if(c=='-' || c==' ') continue;
sum +=(c - '0') * (k % 2 == 0?3:1); //填空
k++;
if(k>12) break;
}
return s.charAt(s.length()-1)-'0' == (10-sum % 10)%10;
}
}

最新文章

  1. Oracle手边常用命令及操作语句
  2. css 图片内容在不同分辨率下居中显示(演示的图片宽度是1920px,当图片宽度大于显示屏的宽度时)
  3. Node ExpressJs server的路径设置
  4. OC中的protocol
  5. Linux以外的开源操作系统大汇总
  6. POJ 1279 Art Gallery(半平面交)
  7. TC SRM 591
  8. 一步一步写miscdevice的驱动模块
  9. Linux How to add a new disk to LVM
  10. POJ 3126 Prime Path (BFS)
  11. Gradle的简介、安装与配置
  12. java学习书籍推荐
  13. MySQL中的数据类型及创建
  14. Content Security Policy (CSP) 介绍
  15. hog cython
  16. hive体系结构
  17. HDU 3974 Assign the task(DFS序)题解
  18. python3字符集之间--encode与decode之间的转码详解
  19. 创建maven自定义archetype项目
  20. mysql-connector-odbc-8.0.11-winx64.msi安装失败

热门文章

  1. 曾开源OpenStack,如今Rackspace再次启动IPO
  2. linux --开机自动挂载硬盘【转】
  3. Web_php_unserialize
  4. 1026 Table Tennis (30分) 难度不高 + 逻辑复杂 +细节繁琐
  5. 桥接模式(c++实现)
  6. Java集合类: Set、List、Map
  7. Kappa(cappa)系数只需要看这一篇就够了,算法到python实现
  8. css3复杂选择器
  9. js 文本框只能输入数字和点
  10. BZOJ1077 并查集