Java语言程序设计(基础篇)-商业:检验ISBN-10

书上给的两组数据一组输入013601267,得到0136012671
还有一组是输入013031997,得到013031997X。
之前不理解x需要怎么实现,索性直接让其变成了字符。
下面的代码经验证,输入书上的俩个输入数据都可以得到其给的数据。

package com.itheima.Javaee.Demo01;

import java.util.Scanner;

public class Demo {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (true) {
            System.out.println("Enter the first 9 digits of an ISBN as integer : ");
            int m = sc.nextInt();
            int d1 = m / 10 / 10000000 % 10; //这里主要是为了实现首位是0,不知道其他的实现方式。
            int d2 = m / 10000000 % 10;
            int d3 = m / 1000000 % 10;
            int d4 = m / 100000 % 10;
            int d5 = m / 10000 % 10;
            int d6 = m / 1000 % 10;
            int d7 = m / 100 % 10;
            int d8 = m / 10 % 10;
            int d9 = m % 10;
            int d10 = (d1 * 1 + d2 * 2 + d3 * 3 + d4 * 4
                    + d5 * 5 + d6 * 6 + d7 * 7 + d8 * 8 + d9 * 9) % 11;
            if (d10 == 10)
                System.out.println("The ISBN -10 number is " + d1 + (m - d1) + "X");
                                         //之所以多此一举,是直接用m带入会吞了首位的0。
            else
                System.out.println("The ISBN -10 number is " + d1 + (m - d1) + d10);
        }
    }
}

你可能感兴趣的:(Java初学)