2017-04-27 139 views
0
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); 

    } 

我如何確保只存儲具有唯一ID的客戶。例如,如果客戶A獲得ID「AB-1」,則客戶B應該具有不同的ID,如「AB-8」。我試圖使用Hashset,但我不確定這是解決此問題的正確方法。我不認爲我需要使用UIDD。關於生成唯一的隨機數

+1

你有一個問題檢查之前製作獨特的ID或使用的集合存在問題? – failedProgrammer

+0

這些客戶最終是否存儲在數據庫中?他們需要什麼範圍纔是唯一的? –

+0

我在製作獨特的ID時遇到了問題。 –

回答

0

考慮這種解決方案

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

的關鍵點在於set是一個字段,它使用contains

+0

我明白了。這段代碼是否只是檢查id是否已被使用? –

+0

是的,'如果(taken.contains(id)){' –

+0

我試過你的代碼,但我不知道如何將ID存儲到客戶。 –

-3

地方
while(set.contains(number)){ number = customer.generateCustomerID("AB", 1); } set.add(number);customer.setCustomerID(number);

+0

也許'!contains'? –

+0

對不起,應該是'contains(number)'。但是我的答案有什麼問題? – wylasr

+0

該代碼仍然給我重複的客戶ID。 –