我有一个方法,例如,
public Order newOrder(Product prod, Supplier supp)
需要生成一个格式为" ordn"的唯一字母数字代码,其中' n'是从1开始的渐进数字,因此每次添加新订单时,ID将增加到" ord2" " ord3" ...
我该怎么做?是否可以通过子串?
来实现我知道如何生成一个整数ID,但这个是一个String ,所以我的问题更像是如何增加一个字符串中的整数。
我尝试将其子串到String ocode = "ord" + n
,只是增加" n",但是如何将这整个内容分配给新订单?还是我需要一个循环?
(代码必须是一个String我猜,后来有一个findOrder()方法通过接受String代码来检索特定的顺序。< - 不确定它是否重要。)
顺便说一下,我是Java新手,这只是练习的一部分。
解决了,结果是子串工作......
答案 0 :(得分:2)
您可以使用static
(tutorial)int,并为每个订单增加1。静态计数器的当前值是当前订单的id。当您需要返回字符串ordn
时,返回"ord"+id
。这是一个简单的例子:
public class Order {
static int sharedCounter = 0; //static, shared with ALL `Order` instances
int orderId = 0; //Specific to particular `Order` instance
public Order() {
this.orderId = sharedCounter++;
}
public String getOrderId(){
return "ord"+this.orderId;
}
}
请注意,每次执行程序时,静态ID都将从零开始。如果你把它写成一个练习,那可能就好了;但如果您需要为现实世界中的某些订单实际生成唯一ID,那么您需要将该信息存储在某个地方,可能是数据库。
另外,请注意我在示例中使用了共享int
,这不是线程安全的。如果线程安全很重要,则需要AtomicInteger
答案 1 :(得分:0)
尝试
String newOrderId = "ord" + (Integer.parseInt(lastOrderId.substring(3)) + 1);