所以我试图生成一个随机数。我将在随机数之前将日期和月份作为整数追加。这可以通过使用以下代码来完成。
Calendar calendar;
calendar=Calendar.getInstance();
int day= calendar.get(Calendar.DAY_OF_MONTH);
int month=calendar.get(Calendar.MONTH)+1; //it treats Jan as 0 hence i add 1
int num= Integer.valueOf(String.valueOf(month)+String.valueOf(day));
现在我需要生成一个随机数,但在它之前添加0。例如今天是9月21日,所以数字看起来像
921 (num) + 22334 (random num) = 92122334
921 (num) + 2 (random num) = 92100002
基本上将0添加到开头,确保数字保持不变。这种用例是生成具有内置时间戳的唯一订单号的更简单方法。我不希望每天处理超过200个订单,因此采用5位数的随机数似乎足够合理,重复的可能性非常小。
答案 0 :(得分:3)
两种可能的解决方案。
Calendar calendar = GregorianCalendar.getInstance();
int num = 0;
num += (calendar.get(Calendar.MONTH) + 1) * 10_000_000;
num += calendar.get(Calendar.DAY_OF_MONTH) * 100_000;
num += your_random_number_lower_100000
第二
Calendar calendar = GregorianCalendar.getInstance();
String randomDigits = String.format("%d%02d%05d",
calendar.get(Calendar.MONTH) + 1,
calendar.get(Calendar.DAY_OF_MONTH),
your_random_number_lower_100000
);
答案 1 :(得分:1)
您可以使用字符串格式:
String finalString = String.format("%d%05d", num, randomNum);
在这里你可以传递第一个参数,你的日和月的计算以及得到的第二个参数随机数。
%05d表示:如果您的整数位数字大小小于5,那么它会附加0(零)以使该数字为5位数。
答案 2 :(得分:0)
怎么样?
int newnumber = 921*100000 + 2;
给出92100002.而不是2,你当然可以使用任意随机数。 如果你想在921前添加零,所以它变为0921和990年9月1日,你需要将它转换为字符串并检查长度,并添加零,直到你有你想要的长度。
答案 3 :(得分:0)
您可以通过以下方式构建String
:
String value = String.valueOf(randomNum); //your random num should have 5 digits or less
int N = 5; //your length
while (value.length < N)
value = "0" + value;
答案 4 :(得分:0)
如果你打算将它存储为一个字符串(你似乎已经在添加921和22334并获得92122334?),最简单的方法是将0添加到字符串的开头。字符串直到达到一定长度。
StringBuilder numberString = new StringBuilder(maxSize);
numberString.append(yourNumber);
while(numberString.length() < maxSize)
numberString.insert('0');