要求生成17位数的字符串可以是字符也可以是整型,按如下公式求和
sum:=8*n[0]+7*n[1]+6*n[2]+5*n[3]+4*n[4]+3*n[5]+2*n[6]+10*n[7]+0*n[8]+9*n[9]+8*n[10]+7*n[11]+6*n[12]+5*n[13]+4*n[14]+3*n[15]+2*n[16];
其中n[0]表示字符串第一位,n[2]表示字符串第3位.
求得的和sum对11取余数,得到的余数y必须和字符串的第9位n[8]相等.
求生成该字符串的算法.要写好的
sum:=8*n[0]+7*n[1]+6*n[2]+5*n[3]+4*n[4]+3*n[5]+2*n[6]+10*n[7]+0*n[8]+9*n[9]+8*n[10]+7*n[11]+6*n[12]+5*n[13]+4*n[14]+3*n[15]+2*n[16];
其中n[0]表示字符串第一位,n[2]表示字符串第3位.
求得的和sum对11取余数,得到的余数y必须和字符串的第9位n[8]相等.
求生成该字符串的算法.要写好的
比如我有个16随机字符串:11111111111111,我要得到的结果应该是11111111X11111111(X是第9位)
按上面公式,可以得到X是1,所以17位数字11111111111111111就符合你的要求。程序懒得写了。
switch(a[i]){
case 'A': n[i]=1; break;
case 'B':n[i]=2; break;
case 'C':n[i]=3;break;
case 'D':n[i]=4;break;
case 'E':n[i]=5;break;
case 'F':n[i]=6;break;
case 'G':n[i]=7;break;
case 'H':n[i]=8;break;
case 'J':n[i]=1;break;
case 'K':n[i]=2;break;
case 'L':n[i]=3;break;
case 'M':n[i]=4;break;
case 'N':n[i]=5;break;
case 'P':n[i]=7;break;
case 'R':n[i]=9;break;
case 'S':n[i]=2;break;
case 'T':n[i]=3;break;
case 'U':n[i]=4;break;
case 'V':n[i]=5;break;
case 'W':n[i]=6;break;
case 'X':n[i]=7;break;
case 'Y':n[i]=8;break;
case 'Z':n[i]=9;break;
case 'a':n[i]=1;break;
case 'b':n[i]=2;break;
case 'c':n[i]=3;break;
case 'd':n[i]=4;break;
case 'e':n[i]=5;break;
case 'f':n[i]=6;break;
case 'g':n[i]=7;break;
case 'h':n[i]=8;break;
case 'j':n[i]=1;break;
case 'k':n[i]=2;break;
case 'l':n[i]=3;break;
case 'm':n[i]=4;break;
case 'n':n[i]=5;break;
case 'p':n[i]=7;break;
case 'r':n[i]=9;break;
case 's':n[i]=2;break;
case 't':n[i]=3;break;
case 'u':n[i]=4;break;
case 'v':n[i]=5;break;
case 'w':n[i]=6;break;
case 'x':n[i]=7;break;
case 'y':n[i]=8;break;
case 'z':n[i]=9;break;
case '1':n[i]=1;break;
case '2':n[i]=2;break;
case '3':n[i]=3;break;
case '4':n[i]=4;break;
case '5':n[i]=5;break;
case '6':n[i]=6;break;
case '7':n[i]=7;break;
case '8':n[i]=8;break;
case '9':n[i]=9;break;
case '0':n[i]=0;break;}
聪明的话,你在这基础上改很容易了。
String[] base={"8","7","6","5","4","3","2","10","0","9","8","7","6","5","4","3","2"};
int[] seq=new int[17];
int total=0;
for(int i=0;i<seq.length;i++){
int iBase=Integer.parseInt(base[i]);
if(i==8){
seq[8]='X';
} else {
seq[i]=(int)Math.abs(Math.random()*10);
total=total+seq[i]*iBase;
}
}
int y=total%11;
seq[8]=y;
for(int i=0;i<seq.length;i++){
System.out.print(seq[i]);
}