【发布时间】:2015-09-21 10:58:41
【问题描述】:
所以我正在尝试生成一个随机数。我将在随机数之前附加日期和月份作为整数。我可以使用以下代码来做到这一点。
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,你需要把它存储在一个字符串中才能做到这一点
-
是的,默认情况下,数字左侧的 0 被忽略。那么我该怎么做呢?我想不出一个有效的方法
-
不可能,使用字符串
-
所以我需要一个 for() 循环将“0”连接到数字?
-
我想说的是:在正确的、面向对象的设计中,您可以而且应该为不同的“事物”使用不同的类型。当对您的订单号的要求在某个时候发生变化时会发生什么;一个简单的 int 不会再这样做了?快乐地修改你的代码。关键是:如果你只是使用纯数字或字符串来实现你的业务逻辑;然后你传播关于你的订单号的基本知识的知识。但它应该放在一个中心的地方。