当前位置: 首页 > news >正文

蓝桥杯练习题-图书ISBN号码

题目:每—本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括9位数字、1位识别码和3位分隔符,其规定格式如“x-xXX-XXXxx-x”,其中符号"-"是分隔符(键盘上的减号),最后—位是识别码,例如O-670-82162-4就是一个标准的ISBN码。ISBN码的首位数字表示书籍的出版语言,例如О代表英语;第—个分隔符“-"之后的三位数字代表出版社,例如670代表维京出版社;第二个分隔之后的五位数字代表该书在出版社的编号;最后—位为识别码。

识别码的计算方法如下:

首位数字乘以1加上次位数字乘以2......以此类推,用所得的结果mod 11,所得的余数即为识别码,如果余数为10,则识别码为大写字母×。例如ISBN号码0-670-82162-4中的识别码4是这样得到的:对067082162这9个数字,从左至右,分别乘以1,2,...,9,再求和,即O×1+6×2+......+2×9=158,然后取158 mod 11的结果4作为识别码。你的任务是编写程序判断输入的ISBN号码中识别码是否正确,如果正确,则仅输出Right;如果错误,则输出你认为是正确的ISBN号码。

实现思路:

1.首先,通过Scanner类从控制台读取用户输入的ISBN号。
2.去除出版编号中的所有“_”。
3.初始化一个累加器sum为0。
4.使用for循环遍历ISBN号中的每个数字字符,除了最后一个字符。将每个数字字符转换为整数,乘以一个递增的k(从1开始),然后将结果加到sum中。
5.根据sum的值计算校验码。如果sum除以11的余数是10,校验码是"X";否则,校验码是sum除以11的余数。
6.获取原始的校验码,即ISBN号中的最后一个字符。
7.如果计算出的校验码与原始校验码相同,则输出"Right",表示ISBN号有效。
8.如果不同,则输出修正后的ISBN号(原始字符串除了最后一个字符之外的所有字符,加上计算出的校验码)。

package com.ztt.Demo01;import java.util.Scanner;
public class demo02 {public static void main(String[] args) {try(Scanner in = new Scanner(System.in)){String isbn=in.nextLine();//去除出版编号中的所有“_”String isbnNumberStr = isbn.replace("-", "");//遍历除数校验码(最后一位)以外的所有字符int sum=0;for(int i=0,k=1;i<isbnNumberStr.length()-1;i++,k++) {int n=Integer.parseInt(String.valueOf(isbnNumberStr.charAt(i)));//将字符转换为字符串,获取字符串isbnNumberStr中的第i个字符,将字符串转换为整数。sum += n * k;}System.out.println(sum);//根据累加值,计算校验码String validateCode = String.valueOf(sum % 11==10 ? "X" :sum % 11);//获取原始的校验码String last=String.valueOf(isbnNumberStr.charAt(isbnNumberStr.length()-1));if(validateCode.equals(last)) {System.out.println("Right");}else {System.out.println(isbn.substring(0,isbn.length()-1) + validateCode);}}}}

运行结果:

0-670-82162-4
158
Right

相关文章:

  • 低代码与人工智能:实现智能化办公的利器
  • 糊涂工具包使用 记录
  • 空间域:空间组学的耶路撒冷
  • 网络安全知识和华为防火墙
  • 手机壳也能散热了?
  • 使用 create-react-app 创建 react 应用
  • 关机恶搞小程序
  • input框不能输入
  • 代码随想录算法训练营第35天 | 860.柠檬水找零 + 406.根据身高重建队列 + 452.用最少数量的箭引爆气球
  • [GN] 设计模式——面向对象设计原则概述
  • 【游戏服务器部署】幻兽帕鲁服务器一键部署保姆级教程,游戏私服还是自己搭建的香
  • 全球工控大佬
  • 基于 NXP S32K311 评估板的方案
  • 网站打不开怎么办?高防IP弹性防护更省心
  • redis主从复制薪火相传
  • 时间复杂度分析经典问题——最大子序列和
  • 【翻译】Mashape是如何管理15000个API和微服务的(三)
  • Create React App 使用
  • Git初体验
  • java 多线程基础, 我觉得还是有必要看看的
  • leetcode46 Permutation 排列组合
  • Less 日常用法
  • Netty 4.1 源代码学习:线程模型
  • node.js
  • OSS Web直传 (文件图片)
  • PHP面试之三:MySQL数据库
  • python_bomb----数据类型总结
  • Spring Cloud中负载均衡器概览
  • 工作中总结前端开发流程--vue项目
  • 记一次用 NodeJs 实现模拟登录的思路
  • 紧急通知:《观止-微软》请在经管柜购买!
  • 快速构建spring-cloud+sleuth+rabbit+ zipkin+es+kibana+grafana日志跟踪平台
  • 那些年我们用过的显示性能指标
  • 适配mpvue平台的的微信小程序日历组件mpvue-calendar
  • 数据仓库的几种建模方法
  • 通过来模仿稀土掘金个人页面的布局来学习使用CoordinatorLayout
  • 如何在 Intellij IDEA 更高效地将应用部署到容器服务 Kubernetes ...
  • #NOIP 2014# day.1 T2 联合权值
  • #每日一题合集#牛客JZ23-JZ33
  • (175)FPGA门控时钟技术
  • (2)STM32单片机上位机
  • (C语言)fgets与fputs函数详解
  • (C语言)输入一个序列,判断是否为奇偶交叉数
  • (求助)用傲游上csdn博客时标签栏和网址栏一直显示袁萌 的头像
  • (四)Controller接口控制器详解(三)
  • (推荐)叮当——中文语音对话机器人
  • (一)python发送HTTP 请求的两种方式(get和post )
  • (一)RocketMQ初步认识
  • (转) SpringBoot:使用spring-boot-devtools进行热部署以及不生效的问题解决
  • ./和../以及/和~之间的区别
  • .NET Conf 2023 回顾 – 庆祝社区、创新和 .NET 8 的发布
  • .NET Core、DNX、DNU、DNVM、MVC6学习资料
  • .net mvc 获取url中controller和action
  • .net 后台导出excel ,word
  • .NET/C# 如何获取当前进程的 CPU 和内存占用?如何获取全局 CPU 和内存占用?