publicfinalclassISBN {/*** 根据输入的ISBN号,检验ISBN的有效性。依据 GB/T 5795-2006 和 ISO 2108:2005 ISBN

* 10位标准和13位标准实现(13位标准自2007年1月1日开始实行,在此之前采用10位标准)。

*

*@paramString isbn:需要进行校验的ISBN字符串

*@returntrue:所输入的ISBN校验正确;

false:所输入的ISBN校验错误*/publicstaticbooleancheckISBN(String isbn) {intcount=0;intcheckBitInt=0;//将ISBN数据全取大写字母//isbn = isbn.toUpperCase();char[] cs=isbn.toCharArray();switch(isbn.length()) {case10://****************************************************************//当ISBN为10位时,进行的校验,用于2007年1月1日前的出版物//数据格式:从左至右前9位为ISBN数据,第10位为校验位//校验方法://(1) 从左至右将前9位数据从10开始至2进行编号,作为位权//(2) 将9位数据与各位位权进行加权,并求其9位和(称为加权和,记作M)//(3) 第10位校验位计算方法,校验位为C://M + C ≡ 0 (mod 11)//C为10时,记作“X”//****************************************************************//取出前9位数字进行加权和计算for(inti=0; i<9; i++) {//若前9位数据中有非数字字符,则抛出异常if(cs[i]'9') {thrownewISBNFormatException("ISBN"+isbn+"第"+(i+1)+"位中出现非法字符"+cs[i]);

}intc=cs[i]-'0';//求加权和count+=c*(10-i);

}//取出校验位数据0~9和X符合校验字符要求if(cs[9]>='0'&&cs[9]<='9') {

checkBitInt=cs[9]-'0';

}elseif(cs[9]=='X'||cs[9]=='x') {//校验位中的“X”表示数据“10”checkBitInt=10;

}else{//非0~9或X时抛出异常thrownewISBNFormatException("ISBN"+isbn+"第 10 位中出现非法字符"+cs[9]);

}//进行校验if((count+checkBitInt)%11==0) {returntrue;//校验成功}else{returnfalse;//校验失败}case13://****************************************************************//当ISBN为13位时,进行的校验,用于2007年1月1日后的出版物//数据格式:从左至右前12位为ISBN数据,第13位为校验位//校验方法://(1) 从左至右将前12位数的取其奇位数和和偶位数和//(2) 将偶位数和乘3,并其与奇位数和的和,得加权和//(3) 第13位校验位计算方法,校验位为C://M + C ≡ 0 (mod 10)//****************************************************************//ISBN为13位数据时,前3位目前只能是“978”(已实行)或“979”(暂未实行)if(!isbn.startsWith("978")&&!isbn.startsWith("979")) {thrownewISBNFormatException("ISBN-13 格式不符合标准");

}//取出前12位数字进行加权和计算intcountEven=0;intcountOdd=0;for(inti=0; i<12; i++) {intc=cs[i]-'0';//若前12位数据中有非数字字符,则抛出异常if(c<0||c>9) {thrownewISBNFormatException("ISBN"+isbn+"第"+(i+1)+"位中出现非法字符"+cs[i]);

}//分别计算奇位数和偶位数的和if((i&0x1)==0) {

countOdd+=c;

}else{

countEven+=c;

}

}//求加权和count=countOdd+(countEven*3);//取出校验位数据if(cs[12]'9') {//校验位为非0~9字符时,抛出异常thrownewISBNFormatException("ISBN"+isbn+"第 13 位中出现非法字符"+cs[12]);

}

checkBitInt=cs[12]-'0';//进行校验if((count+checkBitInt)%10==0) {returntrue;//校验成功}else{returnfalse;//校验失败}default://ISBN为非10位或13位时抛出异常thrownewISBNFormatException("ISBN 格式不符合标准");

}

}

}

java isbn_ISBN(国际标准书号)的校验相关推荐

  1. ISBN是国际标准书号的简称,10位ISBN的最后一位为校验位python

    ISBN是国际标准书号的简称,10位ISBN的最后一位为校验位(由前9位计算得到),校验方法为,前9位数字从左到右分别与10到2相乘,然后求和,得到的和再对11进行整除,得到余数(即对11进行取模运算 ...

  2. 编程练习 P124 6.2 java国际标准书号ISBN是由13位数字组成,分为5段,如978-7-111-50690-4是一个合法的书号。编写程序,用户输入一个字符串书号,检查该书号是否合法。

    import java.util.Scanner;public class ISBNValidator {public static void main(String[] args) {Scanner ...

  3. 国际标准书号 (International Standard Book Number, ISBN)是专门为识别图书等文献而设计的国际编号

    下面是某校2021届转专业计算机科学与工程学院笔试试题. ISBN是由13位数字组成,最后一位是校验码.如图,校验码的计算方法是:用1分别乘ISBN的前12位中的奇数位(从左边开始数起),用3分别乘以 ...

  4. Java黑皮书课后题第6章:*6.21(电话按键盘)国际标准的字母/数字匹配图如编程练习题4.15所示。编写一个测试程序,提示用户输入字符串形式的电话号码。程序将字母(大写或小写)翻译成数字

    6.21(电话按键盘) 题目 题目描述与运行示例 破题 代码 题目 题目描述与运行示例 6.21(电话按键盘)国际标准的字母/数字匹配图如编程练习题4.15所示,编写一个方法,返回给定大写字母的数字, ...

  5. Java黑皮书课后题第4章:*4.15(电话键盘)电话上的国际标准字母/数字映射如下所示。编写程序,提示用户输入一个小写或大写字母,然后显示对应数字。对于非字母输入,提示非法输入

    *4.15(电话键盘)电话上的国际标准字母/数字映射如下所示.编写程序,提示用户输入一个小写或大写字母,然后显示对应数字.对于非字母输入,提示非法输入 题目 题目概述 运行示例 破题 代码 题目 题目 ...

  6. 首个由国内发起的分布式消息领域的国际标准OpenMessaging一周年回顾

    近日,浩鲸科技和京东先后宣布正式加入Linux基金会旗下OpenMessaging开源标准社区,并承诺将与OpenMessaging开源标准社区共同努力营造良好的开源环境,打造厂商中立,面向 Clou ...

  7. Java平台,标准版Oracle JDK 9中的新功能

    Java平台,标准版 Oracle JDK 9中的新增功能 版本9 E77563-05 2017年9月 JDK 9中的新功能概述 Java Platform,Standard Edition 9是一个 ...

  8. 联邦学习首个国际标准正式发布

    2021-04-02 13:31:45 导读:农夫养了一只小羊,想给它吃各种不同营养成分的草料,需要去各地收集草料再运送回来喂它.但是有一天,草料场担心"熟客"农夫暴露他们的商业机 ...

  9. Java 依赖注入标准(JSR-330)简介

    Java 依赖注入标准(JSR-330)简介 转载请保留作者信息: 作者:88250 ,Vanessa 时间:2009 年 11 月 19 日 Java 依赖注入标准(JSR-330,Dependen ...

  10. 音视频编解码的国际标准

    文章目录 1 音视频编解码的国际标准 1.1 音视频编解码相关的组织 1.2 H.265介绍 1 音视频编解码的国际标准 1.1 音视频编解码相关的组织 音视频编解码主要有如下三大组织推动并发展: I ...

最新文章

  1. 那些重要却容易被忽视的用户体验(五)
  2. LeetCode Self Crossing(判断是否相交)
  3. python正则表达式,看完这篇文章就够了...
  4. android应用崩溃的调试方法
  5. Nginx的rewrite之return指令
  6. 极客青年说,北京沙龙
  7. 如何用FineReport制作一张报表(一)
  8. 一些值得注意的算法题——哈希表
  9. java 处理视频帧_如何将视频处理成每帧的图片?.最好是java实现..
  10. 走进波分 -- 14.OSN902产品介绍
  11. 模拟电路4(三极管的特性曲线和重要参数)
  12. 怕公司的新同事超过你怎么办
  13. 数据湖与数据仓库:主要差异
  14. 记一次生产上线的问题
  15. Godot3游戏引擎入门之零一:【翻译】为什么要选择 Godot 引擎
  16. 位图算法BitMap
  17. 方胜山《cisco网络故障处理手册》
  18. html display
  19. EasyPoi实现excel文件导入导出
  20. 本科毕业设计(云计算、深度学习、Python)

热门文章

  1. LaTeX 常用符号命令大全
  2. 局域网常见攻击方式原理
  3. 如何快速选购腾讯云DNS解析服务?
  4. 微信公众号获取用户位置信息
  5. 网易校招测试岗位2018
  6. 联想服务器硬盘启动设置方法,教你联想台式机bios设定硬盘启动方法
  7. Tiny 6410 K9GAG08U0E nand flash移植uboot
  8. python转二进制_python转二进制
  9. Java根据isbn查询图书信息_isbn书号查询api,根据图书ISBN查询详细信息
  10. c语言 组合问题,排列组合问题 C语言