生成一个随机数并在其前面加0以确保固定的位数

时间:2015-09-21 10:58:42

标签: java android random

所以我试图生成一个随机数。我将在随机数之前将日期和月份作为整数追加。这可以通过使用以下代码来完成。

    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位数的随机数似乎足够合理,重复的可能性非常小。

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');