蓝桥杯练习题

题目:每---本正式出版的图书都有一个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号(原始字符串除了最后一个字符之外的所有字符,加上计算出的校验码)。

java 复制代码
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);
			}
		}

	}

}

运行结果:

java 复制代码
0-670-82162-4
158
Right
相关推荐
KATA~1 分钟前
解决MyBatis-Plus枚举映射错误:No enum constant问题
java·数据库·mybatis
xyliiiiiL17 分钟前
一文总结常见项目排查
java·服务器·数据库
shaoing19 分钟前
MySQL 错误 报错:Table ‘performance_schema.session_variables’ Doesn’t Exist
java·开发语言·数据库
腥臭腐朽的日子熠熠生辉1 小时前
解决maven失效问题(现象:maven中只有jdk的工具包,没有springboot的包)
java·spring boot·maven
ejinxian1 小时前
Spring AI Alibaba 快速开发生成式 Java AI 应用
java·人工智能·spring
杉之1 小时前
SpringBlade 数据库字段的自动填充
java·笔记·学习·spring·tomcat
Jasmin Tin Wei1 小时前
蓝桥杯 web 学海无涯(axios、ecahrts)版本二
前端·蓝桥杯
圈圈编码2 小时前
Spring Task 定时任务
java·前端·spring
渗透测试老鸟-九青2 小时前
面试经验分享 | 成都渗透测试工程师二面面经分享
服务器·经验分享·安全·web安全·面试·职场和发展·区块链
俏布斯2 小时前
算法日常记录
java·算法·leetcode