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

Java 生成一个随机数并在其前面加上0,以确保固定位数,java,android,random,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

所以我试图生成一个随机数。我将把日期和月份作为整数附加到随机数之前。我可以通过使用以下代码来实现这一点

    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位数的随机数似乎足够合理,因为重复的概率非常小。

那怎么办

int newnumber = 921*100000 + 2;
这就是92100002。当然,你可以使用任意随机数,而不是2。 如果要在921前面添加零,使其变为0921,例如,对于0901年9月1日,需要将其转换为字符串并检查长度,然后添加零,直到获得所需的长度。

如何

int newnumber = 921*100000 + 2;
这就是92100002。当然,你可以使用任意随机数,而不是2。
如果您想在921前面添加零,使其变为0921,例如,对于0901年9月1日,您需要将其转换为字符串并检查长度,然后添加零,直到获得所需的长度。

您可以通过以下方式构造
字符串

 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;
String value=String.valueOf(randomNum)//您的随机数字应为5位数或更少
int N=5//你的长度
while(value.length
您可以通过以下方式构造
字符串

 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;
String value=String.valueOf(randomNum)//您的随机数字应为5位数或更少
int N=5//你的长度
while(value.length
如果要将其存储为字符串(似乎您已经在这样做了,因为您正在添加921和22334并获得92122334?),最简单的方法是在字符串的开头添加0,直到它达到某个长度

StringBuilder numberString=新的StringBuilder(maxSize);
numberString.append(您的号码)

while(numberString.length()numberString.insert('0')

如果要将其存储为字符串(由于添加了921和22334并获得了92122334?),最简单的方法是在字符串的开头添加0,直到它达到某个长度

StringBuilder numberString=新的StringBuilder(maxSize);
numberString.append(您的号码)

while(numberString.length()numberString.insert('0')

两种可能的解决方案

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

两种可能的解决办法

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

您可以使用字符串格式:

String finalString = String.format("%d%05d", num, randomNum);
在这里,您可以传递第一个参数,您对日和月的计算,以及得到的第二个参数随机数


%05d的意思是:如果您的整数大小小于5,则它将附加0(零)以使数字为5位。

您可以使用字符串格式:

String finalString = String.format("%d%05d", num, randomNum);
在这里,您可以传递第一个参数,您对日和月的计算,以及得到的第二个参数随机数


%05d的意思是:如果您的整数位数小于5,则它将附加0(零)以使数字成为5位数。

您不能将0前置到整数,您需要将其存储在字符串中,这样做默认情况下忽略数字左侧的0。那我该怎么做呢?我想不出一个有效的方法这是不可能的,使用一个Stringso我需要一个for()循环将“0”连接到数字上?我想说的是:在一个正确的、面向对象的设计中,您可以而且应该为不同的“事物”使用不同的类型。当对订单号的要求在某一点发生变化时会发生什么情况;一个简单的int不能再做了?很高兴重新编写代码。要点是:如果您只是使用普通数字或字符串来实现您的业务逻辑;然后你把你的订单号要点的知识传播到各地。但是它应该放在一个中心位置。你不能将0前置为整数,你需要将它存储在字符串中才能做到这一点。默认情况下,忽略数字左边的0。那我该怎么做呢?我想不出一个有效的方法这是不可能的,使用一个Stringso我需要一个for()循环将“0”连接到数字上?我想说的是:在一个正确的、面向对象的设计中,您可以而且应该为不同的“事物”使用不同的类型。当对订单号的要求在某一点发生变化时会发生什么情况;一个简单的int不能再做了?很高兴重新编写代码。要点是:如果您只是使用普通数字或字符串来实现您的业务逻辑;然后你把你的订单号要点的知识传播到各地。但它应该放在一个中心位置。