Java 关于生成唯一随机数 public String generateCostomerid(字符串id,整数位)//客户类 随机生成器=新随机(); 字符串索引=”; 对于(inti=1;i
placeJava 关于生成唯一随机数 public String generateCostomerid(字符串id,整数位)//客户类 随机生成器=新随机(); 字符串索引=”; 对于(inti=1;i,java,Java,place while(set.contains(number)){ 编号=customer.generateCustomerID(“AB”,1); } 之前 set.add(编号);customer.setCustomerID(编号);考虑此解决方案 public String generateCustomerID(String id, int digit)//Customer Class randomGenerator = new Random(); String ind
while(set.contains(number)){
编号=customer.generateCustomerID(“AB”,1);
}
之前
set.add(编号);customer.setCustomerID(编号);
考虑此解决方案
public String generateCustomerID(String id, int digit)//Customer Class
randomGenerator = new Random();
String index = "";
for(int i = 1; i <= digit; i++)
{
index += randomGenerator.nextInt(10);
}
return id + index;
public void storeCustomer(Customer customer)//Shop Class
{
customerList.add(customer);
HashSet<String> set = new HashSet<>();
String number = customer.generateCustomerID("AB", 1);
set.add(number);
customer.setCustomerID(number);
}
staticsettake=newhashset();
公共静态void main(字符串[]args)
{
扫描仪扫描=新扫描仪(System.in);
while(true){
System.out.println(“输入id”);
String id=scan.nextLine();
如果(采取。包含(id)){
System.out.println(“已获取”);
继续;
}
take.add(id);
System.out.println(“其他[y/n]?”);
if(scan.nextLine().equals(“n”))
打破
}
}
关键的一点是,
set
是一个字段,它是使用contains
检查的。您在创建唯一ID或使用的集合方面有问题吗?这些客户最终是否存储在数据库中?他们需要在什么范围内唯一?我在创建唯一ID方面有问题。可能的dup很多人正在storeCustomer
中定义集合
,因此每次调用此方法时都会重新创建该集合-将其作为字段移动。此外,您似乎没有检查该集合以查看该数字是否存在可能!contains
?很抱歉,它应该是contains(number)
。但是我的答案有什么问题吗?请参阅OP下面的我的评论question@James我把HashSet=new HashSet();
作为实例放在类中。我明白了。这段代码只是检查id是否已经被获取了吗?是的,if(take.contains(id)){
我尝试了您的代码,但我不知道如何将id存储到customer中。以及根据您的原始代码customer.setCustomerID(number);
只需将number
替换为我更有意义的命名变量id
static Set<String> taken = new HashSet <>();
public static void main(String [] args)
{
Scanner scan = new Scanner (System.in);
while (true) {
System.out.println("enter id ");
String id = scan.nextLine();
if (taken.contains(id)) {
System.out.println("already taken");
continue;
}
taken.add (id);
System.out.println("another [y/n]? ");
if (scan.nextLine().equals("n"))
break;
}
}