本帖最后由 yi_remember 于 2012-12-23 17:48:23 编辑

解决方案 »

  1.   

    int[] D=new int[9];
    int j;
    D[0]=num/100000000;
    for(i=1;i<9;i++)
    {
    D[i]=num;
    for(j=1;j<=i;j++)
    {
    D[i]=D[i]%((9-j)*10);
    }
    D[i]=D[i]/((9-i-1)>0?(9-i-1)*10:1);
    }
      

  2.   


    import java.util.Scanner;public final class Test {
    /**
     * ISBN(国际标准书号)是个十位整数d1d2d3d4d5d6d7d8d9d10,最后的一位d10是校验和。
     * d10 = (d1*1 + d2*2 +d3*3 + d4*4 + d5*5 + d6*6 + d7*7 + d8*8 + d9*9) % 11
     * 提示用户输入前9个数。
     * 然后显示10为ISBN(包括前面起始位置的0)。
     */

    public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    System.out.print("Enter the number (9num): ");
    String numStr = input.next();
    System.out.println(getISBN(numStr));
    } /**
     * 
     * @param numStr 前9位ISBN号码
     * @return 10位ISBN号码
     */
    private static String getISBN(String numStr) {
    assert numStr.length() == 9;
    long num = Long.valueOf(numStr);
    long sum = 0;
    for(int i = 9;i >= 1;--i){
    long value = num % 10;
    sum += i * value;
    num /= 10;
    }
    return numStr + (sum % 11);
    }

    }