日期:2014-05-20  浏览次数:20692 次

java基础问题:循环以及获取某位数值。
本帖最后由 yi_remember 于 2012-12-23 17:48:23 编辑
/**
 * 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)。
 */
package Test;

import java.util.Scanner;

public class T39Scanner {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("Enter the number (9num): ");
int num = input.nextInt();

int D1 = (num / 100000000) ; 
int D2 = (num % 100000000) / 10000000;
int D3 = (num % 100000000) % 10000000 / 1000000;
int D4 = (num % 100000000) % 10000000 % 1000000 / 100000;
int D5 = (num % 100000000) % 10000000 % 1000000 % 100000 / 10000;
int D6 = (num % 100000000) % 10000000 % 1000000 % 100000 % 10000 / 1000;
int D7 = (num % 100000000) % 10000000 % 1000000 % 100000 % 10000 % 1000 / 100;
int D8 = (num % 100000000) % 10000000 % 1000000 % 100000 % 10000 % 1000 % 100 / 10;
int D9 = (num % 100000000) % 10000000 % 1000000 % 100000 % 10000 % 1000 % 100 % 10;

System.out.println("D1 is " + D1 + " D2 is " + D2 + " D3 is " + D3
+ " D4 is " + D4 + " D5 is " + D5 + " D6 is " + D6
+ " D7 is " + D7 + " D8 is " + D8 + " D9 is " + D9);

int D10 = (D1 * 1 + D2 * 2 + D3 * 3 + D4 * 4 + D5 * 5
+ D6 * 6 + D7 * 7 + D8 * 8 + D9 * 9) % 11;

boolean even = (D1 == 0);
if (even == true)
System.out.println("The number is: " + D1 + "" + num + "" + D10);
// else
// System.out.println("The number is: " + num + "" + D10);
}

}

------解决方案--------------------
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);
}

------解决方案--------------------

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