1. 程式人生 > >書本ISBN號碼校驗

書本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。