日前在项目中到了的优惠券参考ISNB算法,自己做的一个生成序列号的JAVA代码
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
public class ISBN_CODE {
public static void main(String[] args) {
String startNumber = "10000";//开始值
String perfix = "JD0801";//前缀
String count = "30000"; //次数
List allData = new ArrayList();
int abc = Integer.parseInt(startNumber);
String perfixNumber = perfix.substring(3, 6);
for (int k = 0; null != count && k < Integer.parseInt(count); k++) {
abc = abc + 1;
String abcString = String.valueOf(abc);
Random random = new Random();
String[] authcode = { "1", "2", "3", "4", "5", "6", "7", "8", "9" };
String rand1 = authcode[random.nextInt(9)];
String rand2 = authcode[random.nextInt(9)];
String a1 = abcString.substring(0, 2);
String a2 = abcString.substring(2, 4);
String a3 = abcString.substring(4, 5);
String fff = perfixNumber + a1 + rand1 + a2 + rand2 + a3;
Long sum = new Long("0");
String ae = null;
for (int i = 0; i <= 8; i++) {
String qw = fff.substring(i, i + 1);
sum = sum + (10 - i) * Integer.parseInt(qw);
}
Long aa1 = 11 - (sum % 11);
if (aa1 == 10) {
ae = "X";
} else if (aa1 == 11) {
ae = "0";
} else {
ae = aa1.toString();
}
String endStr = perfix + a1 + rand1 + a2 + rand2 + a3 + ae;
allData.add(endStr);
}
System.out.println("总大小" + allData.size());
for (int i = 0; i < allData.size(); i++) {
String ao = (String) allData.get(i);
System.out.println("序列值为:" + ao);
}
}
}