書本ISBN號碼校驗
每一本正式出版的圖書都有一個 ISBN 號碼與之對應,ISBN 碼包
括 9 位數字、1 位識別碼和 3 位分隔符,其規定格式如“x-xxxxxxxx-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
下面是程式碼:
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner ss = new Scanner(System.in); String str = ss.nextLine(); char str1[] = str.toCharArray(); int[] str2 = new int[13]; int i = 0,j = 0,sum = 0,k=0; for(i = 0;i<13&&j<13;i++) { if(i != 1&&i != 5&&i != 11) { str2[j] = (int)str1[i]-48; j++; } else { continue; } } for(i = 0;i<j-1;i++){ sum += str2[i]*(i+1); } sum = sum%11; if(sum == str2[9]) System.out.println("Right"); else { for(k = 0;k<9;k++){ if((k==1)||(k==4)){ System.out.print("-" + str2[k]); } else{ System.out.print(str2[k]); } } System.out.println("-" + sum); } } }
相關推薦
書本ISBN號碼校驗
問題描述 每一本正式出版的圖書都有一個 ISBN 號碼與之對應,ISBN 碼包 括 9 位數字、1 位識別碼和 3 位分隔符,其規定格式如“x-xxxxxxxx-x”,其中符號“-”是分隔符(鍵盤上的減號),最後一位是 識別碼,例如 0-670-82162-4 就是一個標
正則表達式 - IP地址、Mac地址、端口、經緯度、車牌號碼校驗
size ip地址 端口 font ont round strong [0 -a IP地址驗證: /^(\d|[1-9]\d|1\d{2}|2[0-5][0-5])\.(\d|[1-9]\d|1\d{2}|2[0-5][0-5])\.(\d|[1-9]\d|1\d{2
java身份證號碼校驗、郵箱校驗、手機號碼/電話號碼校驗
i++ start exceptio span cas table mail pub sys import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.
正則表示式 - IP地址、Mac地址、埠、經緯度、車牌號碼校驗
驗證地址 需要把表示式首尾斜槓去掉 IP地址驗證: /^(\d|[1-9]\d|1\d{2}|2[0-5][0-5])\.(\d|[1-9]\d|1\d{2}|2[0-5][0-5])\.(\d|[1-9]\d|1\d{2}|2[0-5][0-5])\.(\d
身份證號碼校驗 java校驗
最近在身份證認證的時候,需要對身份證號碼進行校驗。這裡進行記錄下 package com.ptpl.web.util; /** * 身份證前6位【ABCDEF】為行政區劃數字程式碼(簡稱數字碼)說明(參考《GB/T 2260-2007 中華人民共和國行政區劃程式碼》)
簡訊驗證碼的新對手:本機號碼校驗
登入網站或應用的時候,總會有千奇百怪的驗證碼來考驗我們的眼力與運氣。 1和l、2和Z、8和B等驗證碼經常傻傻分不清。 有時候數字跟字母無縫重疊在一起,一次就能驗證成功絕對是大神! 既然驗證碼如此不得人心,為何仍被沿用至今?因為驗證碼不僅幫助開發者甄別惡意的登入註冊請
Excel自定義函式_身份證號碼校驗
先上校驗規則 身份證號碼校驗規則一般應有: 位數校驗:是否18位 性別校驗:號碼所反映的性別與登記的文字性別是否一樣 日期校驗:①年份 出生年份比當前系統年份晚為錯,早於100也記為錯,應核實;②月份數值 應在01-12之間;③日期數值 1/3/5/7/8/10/12
超完整、全面的身份證號碼校驗
/** * identityCardVerify:身份證校驗 * param:cardId==身份證元素id */var identityCardVerify= function (cardId) { var vcity = { 11: "北京", 12:
身份證號碼生成與校驗
style 山西 年份 組成 生成 rate rar div throws 在測試過程中難免會遇到需要身份證號碼的情況,記錄下隨機生成身份證號碼與如何檢驗身份證號碼的方法。 首先要了解身份證號碼的組成方式: 號碼結構:公民身份號碼是特征組合碼,由十七位數字本體碼
18位身份證號碼最後一位校驗
void i++ apt div 身份證號碼 ++ print col str 1 package com.jdk7.chapter5; 2 3 /** 4 * 僅能校驗15位或18位身份證號的校驗碼 5 * @author Administrator
js 手機號碼和電話號碼正則校驗
bsp con return else 校驗 AS AR obi ret checkPhone() { var mobile = ‘‘; var tel = /^0\d{2,3}-?\d{7,8}$/; var phone = /^(
js 手機號碼簡單正則校驗
test 分代 開頭 cti back 簡單 mage 循環 格式 現在手機號碼的號段有如下幾種,包括17年新發出的三個(166,199,198)號段。 在一些項目註冊登錄或者其他中,涉及到手機號進行一個簡單的有效驗證,在前端先進行一個簡單的檢驗; 判斷字符串是否
2018年最新電話號碼正則表示式校驗方法
正則表示式 ^1(3[0-9]|4[57]|5[^4]|6[6]|7[0-8]|8[0-9]|9[8-9])\\d{8}$ iOS使用方法 + (BOOL)checkPhoneNumber:(NSString *)phoneNumber{ /* ** 電訊號
校驗身份證號碼
校驗身份證是否正確,必須是二代身份證,身份證號是18位 /** * 驗證18位身份編碼是否合法 * * @param idCard 身份編碼 * @return 是否合法 */ public static boolean val
文字校驗的工具類--中文,電話號碼,郵箱,身份證等資訊的校驗
這是專案中常用的文字校驗的工具類,包括:中文,電話號碼,郵箱,身份證等資訊的校驗 import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; impor
居民身份證號碼的奧祕及身份證第18位(校驗碼)的計算方法
居民身份證是國家法定的證明公民個人身份的證件。為了堵塞和制止假居民身份證的流通和使用,在查驗和核查居民身份證時可掌握以下幾個要點: 一、居民身份證有效期限與持證人年齡、簽發日期的關係 居民身份證的有效期限分為10年、20年、長期三種。16週歲至25週歲的,發給有效期為10年的居民身份
使用Python隨機生成身份證號碼及校驗
GitHub : https://github.com/jayknoxqu/id-number-util 身份組成方式 中華人民共和國國家標準GB 11643-1999《公民身份號碼》中規定:公民身份號碼是特徵組合碼,由十七位數字本體碼和一位校驗碼組成。 18位數字組合的方式是:
python3身份證號碼生成與校驗
# /usr/bin/python # -*- coding:utf-8 -*- import re import random from datetime import datetime, timedelta, date '''身份證第18位(校驗碼)的計算方法 1、將前面的身份證號碼17位數分別
java 校驗一個字串是否是手機號碼
public static boolean isMobileNO(String mobiles) { String telRegex = "[1][3578]\\d{9}"; // "[1]"代表第1位為數字1,"[357
JS校驗身份證號碼
function isIdCardNo(num) { num = num.toUpperCase(); //身份證號碼為15位或者18位,15位時全為數字,18位前17位為數字,最後一位是校驗位,可能為數字或字元X。