java isbn_ISBN(国际标准书号)的校验
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(国际标准书号)的校验相关推荐
- ISBN是国际标准书号的简称,10位ISBN的最后一位为校验位python
ISBN是国际标准书号的简称,10位ISBN的最后一位为校验位(由前9位计算得到),校验方法为,前9位数字从左到右分别与10到2相乘,然后求和,得到的和再对11进行整除,得到余数(即对11进行取模运算 ...
- 编程练习 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 ...
- 国际标准书号 (International Standard Book Number, ISBN)是专门为识别图书等文献而设计的国际编号
下面是某校2021届转专业计算机科学与工程学院笔试试题. ISBN是由13位数字组成,最后一位是校验码.如图,校验码的计算方法是:用1分别乘ISBN的前12位中的奇数位(从左边开始数起),用3分别乘以 ...
- Java黑皮书课后题第6章:*6.21(电话按键盘)国际标准的字母/数字匹配图如编程练习题4.15所示。编写一个测试程序,提示用户输入字符串形式的电话号码。程序将字母(大写或小写)翻译成数字
6.21(电话按键盘) 题目 题目描述与运行示例 破题 代码 题目 题目描述与运行示例 6.21(电话按键盘)国际标准的字母/数字匹配图如编程练习题4.15所示,编写一个方法,返回给定大写字母的数字, ...
- Java黑皮书课后题第4章:*4.15(电话键盘)电话上的国际标准字母/数字映射如下所示。编写程序,提示用户输入一个小写或大写字母,然后显示对应数字。对于非字母输入,提示非法输入
*4.15(电话键盘)电话上的国际标准字母/数字映射如下所示.编写程序,提示用户输入一个小写或大写字母,然后显示对应数字.对于非字母输入,提示非法输入 题目 题目概述 运行示例 破题 代码 题目 题目 ...
- 首个由国内发起的分布式消息领域的国际标准OpenMessaging一周年回顾
近日,浩鲸科技和京东先后宣布正式加入Linux基金会旗下OpenMessaging开源标准社区,并承诺将与OpenMessaging开源标准社区共同努力营造良好的开源环境,打造厂商中立,面向 Clou ...
- Java平台,标准版Oracle JDK 9中的新功能
Java平台,标准版 Oracle JDK 9中的新增功能 版本9 E77563-05 2017年9月 JDK 9中的新功能概述 Java Platform,Standard Edition 9是一个 ...
- 联邦学习首个国际标准正式发布
2021-04-02 13:31:45 导读:农夫养了一只小羊,想给它吃各种不同营养成分的草料,需要去各地收集草料再运送回来喂它.但是有一天,草料场担心"熟客"农夫暴露他们的商业机 ...
- Java 依赖注入标准(JSR-330)简介
Java 依赖注入标准(JSR-330)简介 转载请保留作者信息: 作者:88250 ,Vanessa 时间:2009 年 11 月 19 日 Java 依赖注入标准(JSR-330,Dependen ...
- 音视频编解码的国际标准
文章目录 1 音视频编解码的国际标准 1.1 音视频编解码相关的组织 1.2 H.265介绍 1 音视频编解码的国际标准 1.1 音视频编解码相关的组织 音视频编解码主要有如下三大组织推动并发展: I ...
最新文章
- 那些重要却容易被忽视的用户体验(五)
- LeetCode Self Crossing(判断是否相交)
- python正则表达式,看完这篇文章就够了...
- android应用崩溃的调试方法
- Nginx的rewrite之return指令
- 极客青年说,北京沙龙
- 如何用FineReport制作一张报表(一)
- 一些值得注意的算法题——哈希表
- java 处理视频帧_如何将视频处理成每帧的图片?.最好是java实现..
- 走进波分 -- 14.OSN902产品介绍
- 模拟电路4(三极管的特性曲线和重要参数)
- 怕公司的新同事超过你怎么办
- 数据湖与数据仓库:主要差异
- 记一次生产上线的问题
- Godot3游戏引擎入门之零一:【翻译】为什么要选择 Godot 引擎
- 位图算法BitMap
- 方胜山《cisco网络故障处理手册》
- html display
- EasyPoi实现excel文件导入导出
- 本科毕业设计(云计算、深度学习、Python)