CCF计算机软件能力认证模拟试题-ISBN号码(Java参考答案学习记录)
2016-09-05 16:02
651 查看
问题描述
每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括9位数字、1位识别码和3位分隔符,其规定格式如“x-xxx-xxxxx-x”,其中符号“-”是分隔符(键盘上的减号),最后一位是识别码,例如0-670-82162-4就是一个标准的ISBN码。ISBN码的首位数字表示书籍的出版语言,例如0代表英语;第一个分隔符“-”之后的三位数字代表出版社,例如670代表维京出版社;第二个分隔之后的五位数字代表该书在出版社的编号;最后一位为识别码。
识别码的计算方法如下:
首位数字乘以1加上次位数字乘以2……以此类推,用所得的结果mod 11,所得的余数即为识别码,如果余数为10,则识别码为大写字母X。例如ISBN号码0-670-82162-4中的识别码4是这样得到的:对067082162这9个数字,从左至右,分别乘以1,2,…,9,再求和,即0×1+6×2+……+2×9=158,然后取158 mod 11的结果4作为识别码。
编写程序判断输入的ISBN号码中识别码是否正确,如果正确,则仅输出“Right”;如果错误,则输出是正确的ISBN号码。
输入格式
输入只有一行,是一个字符序列,表示一本书的ISBN号码(保证输入符合ISBN号码的格式要求)。
输出格式
输出一行,假如输入的ISBN号码的识别码正确,那么输出“Right”,否则,按照规定的格式,输出正确的ISBN号码(包括分隔符“-”)。
样例输入
0-670-82162-4
样例输出
Right
样例输入
0-670-82162-0
样例输出
0-670-82162-4
答案内容有诸多函数之前没有用过,包括一些JavaScript方法,掌握这些方法简便很多。
每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括9位数字、1位识别码和3位分隔符,其规定格式如“x-xxx-xxxxx-x”,其中符号“-”是分隔符(键盘上的减号),最后一位是识别码,例如0-670-82162-4就是一个标准的ISBN码。ISBN码的首位数字表示书籍的出版语言,例如0代表英语;第一个分隔符“-”之后的三位数字代表出版社,例如670代表维京出版社;第二个分隔之后的五位数字代表该书在出版社的编号;最后一位为识别码。
识别码的计算方法如下:
首位数字乘以1加上次位数字乘以2……以此类推,用所得的结果mod 11,所得的余数即为识别码,如果余数为10,则识别码为大写字母X。例如ISBN号码0-670-82162-4中的识别码4是这样得到的:对067082162这9个数字,从左至右,分别乘以1,2,…,9,再求和,即0×1+6×2+……+2×9=158,然后取158 mod 11的结果4作为识别码。
编写程序判断输入的ISBN号码中识别码是否正确,如果正确,则仅输出“Right”;如果错误,则输出是正确的ISBN号码。
输入格式
输入只有一行,是一个字符序列,表示一本书的ISBN号码(保证输入符合ISBN号码的格式要求)。
输出格式
输出一行,假如输入的ISBN号码的识别码正确,那么输出“Right”,否则,按照规定的格式,输出正确的ISBN号码(包括分隔符“-”)。
样例输入
0-670-82162-4
样例输出
Right
样例输入
0-670-82162-0
样例输出
0-670-82162-4
答案内容有诸多函数之前没有用过,包括一些JavaScript方法,掌握这些方法简便很多。
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main2 { public static void main(String[] args) { BufferedReader bin=new BufferedReader(new InputStreamReader(System.in)); //1. java.io.BufferedReader和java.io.BufferedWriter类各拥有8192字符的缓冲区。当BufferedReader在读取文本文件时,会先尽量从文件中读入字符数据并置入缓冲区,而之后若使用read()方法,会先从缓冲区中进行读取。如果缓冲区数据不足,才会再从文件中读取,使用BufferedWriter时,写入的数据并不会先输出到目的地,而是先存储至缓冲区中。如果缓冲区中的数据满了,才会一次对目的地进行写出。
<span style="font-family: Arial, Helvetica, sans-serif;"> //2. 从标准输入流System.in中直接读取使用者输入时,使用者每输入一个字符,System.in就读取一个字符。为了能一次读取一行使用者的输入,使用了BufferedReader来对使用者输入的字符进行缓冲。readLine()方法会在读取到使用者的换行字符时,再一次将整行字符串传入。</span>
//3. System.in是一个位流,为了转换为字符流,可使用InputStreamReader为其进行字符转换,然后再使用BufferedReader为其增加缓冲功能。 try { int sum=0;char cc='0'; String isbn_0=bin.readLine(); String isbn=isbn_0.replace("-","");//replace()可以替换字符串,在这里将“-”去掉便于后面计算</span> for(int i=0;i<9;i++){ int ii=(int)isbn.charAt(i)-48;//charAt(i)表示第i个字符的值,"0"的Ascll码为48 sum +=ii*(i+1); } sum=sum%11; if(sum==0) cc='X'; else cc=(char)(sum+48); if(cc==isbn.charAt(9)) System.out.println("Right"); else{ isbn_0=isbn_0.substring(0, 12)+cc;//substring() 方法用于提取字符串中介于两个指定下标之间的字符</span> System.out.println(isbn_0); } } catch (IOException e) { e.printStackTrace(); } } }
相关文章推荐
- CCF计算机软件能力认证模拟试题-出现次数最多的数(Java参考答案学习记录)
- CCF计算机软件能力认证模拟试题-出现次数最多的数(Java参考答案学习记录)
- CCF计算机软件能力认证试题练习-数位之和(Java参考答案学习记录)
- CCF计算机软件能力认证试题练习-图像旋转(Java参考答案学习记录)
- CCF计算机软件能力认证试题练习-日期计算(Java参考答案学习记录)
- CCF计算机软件能力认证试题练习-数列分段(Java参考答案学习记录)
- CCF计算机软件能力认证试题练习-门禁系统(Java参考答案学习记录)
- CCF计算机软件能力认证试题练习-相邻数对(Java参考答案学习记录)
- CCF计算机软件能力认证试题练习-相反数(Java参考答案学习记录)
- CCF计算机软件能力认证模拟试题参考答案(JAVA)(201703 1+2)
- CCF计算机软件能力认证模拟试题-最大的矩形(Java参考答案学习记录)
- CCF计算机软件能力认证试题练习-折点计算(Java参考答案学习记录)
- 2016年4月CCF计算机软件能力认证模拟试题代码参考
- CCF计算机软件能力认证试题练习201312-2-ISBN号码
- CCF计算机软件能力认证模拟试题(c/c++)
- CCF计算机软件能力认证模拟试题(c/c++)
- CCF计算机软件能力认证试题练习201312-3-最大的矩形
- 第三次CCF计算机软件能力认证考试题解(Java)--201412--最优灌溉--100分通过
- CCF计算机软件能力认证试题练习201403-1 相反数
- CCF软件能力认证考试模拟题 ISBN号码