首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

java基础有关问题:循环以及获取某位数值

2013-01-09 
java基础问题:循环以及获取某位数值。本帖最后由 yi_remember 于 2012-12-23 17:48:23 编辑/** * ISBN(国际

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


 * 提示用户输入前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);
}

}

热点排行
Bad Request.