2014-09-05 44 views
1

我正在創建一個銀行程序和hava類Account(摘要),SavingsAccountCustomer(等等)。當我創建一個新的savingsaccount我想爲每個帳戶獲取一個ID。我的問題是我無法弄清楚如何讓ID獨特。獲取唯一的id銀行程序java

我還缺少什麼?我怎樣才能爲客戶和賬戶使用ArrayList?還有其他建議嗎?這對我來說非常困難,但我努力學習和理解。

在銀行類中,我創建了幾個客戶c1和c2。然後,我爲客戶c1創建兩個帳戶。

public class Bank { 
    public static void main(String[] args) { 

    ArrayList<Customer> customerList = new ArrayList<Customer>(); 
    ArrayList<Account> accountList = new ArrayList<Account>(); 

    Customer c1 = new Customer("John"); 
    Customer c2 = new Customer("Sam");   

    SavingsAccount a1 = new SavingsAccount(c1); 
    SavingsAccount a2 = new SavingsAccount(c1); 

    customerList.add(c1); 
    customerList.add(c2);    

    accountList.add(a1); 
    accountList.add(a2); 
    } 
} 

帳號等級:

public abstract class Account { 
    protected int balance; 
    protected int id; 
    protected double interest; 
    protected Customer name; 

    public Account() {} 

    public Account(Customer name) { 
    this.name = name; 
    } 

    public abstract void deposit(int amount); 

    public abstract void withdraw(int amount); 

    public abstract int getBalance(); 

    public abstract void transfer(int amount, Account account); 
} 

在類SavingsAccount:

public class SavingsAccount extends Account{ 
    public SavingsAccount() { 
     super(); 
    } 

    SavingsAccount(Customer person) { 
     name = person; 
     id = (int) Math.floor(Math.random()*101); //This won't generate a unique number for each savingsaccount 
    } 
} 
+0

如果你不存儲你的uid在一個窗體中(如Vaishak Suresh的發音答案#1)它不能保證是一個唯一的ID - 這不太可能,但不能保證 - 但如果你只是爲了練習而編寫代碼,那麼你可以使用簡單的文本文件而不是數據庫(在這種情況下,UUID會適合你......所以不要介意我的提示...... – 2014-09-05 19:37:42

回答

2

你在做的代碼是獲得一個僞隨機數在0到101的範圍內。這樣做n請確保數字不會重複。一些方法,以確保唯一的ID代是

  1. 如果您正在使用的數據庫,具有由數據庫
  2. 有在你每次分配一個ID時間增加代碼的靜態變量生成一個自動增量數
  3. 編寫某種形式的哈希函數,該函數根據Customer對象生成一個整數ID。
  4. 使用UUID也可以生成唯一的ID。這也可以讓你隨機計算它,並獲得散列ID等
+0

謝謝。起初我有一個想法,在列表中保存1-100的數字,然後(以某種方式)從我將嘗試你的第二個建議 – user2939293 2014-09-05 19:19:39

+1

5.使用一個簡單的密碼來加密0,1,2,3 ......等等。因爲密碼是可逆的他的輸出保證對於獨特的輸入是唯一的。 – rossum 2014-09-07 16:28:48

+0

我不認爲#3是一個選項,即使接受(要求?)相同的ID以獲得相同的「客戶對象」:散列函數不要求是內射的,並且通常不需要標準映射將無限輸入映射到有限集合的價值觀 - 認爲生日悖論。 – greybeard 2014-10-28 09:12:23

0

Ofcourse數學隨機給你一個隨機數,但不是唯一的...使用UUID.randomUUID()。 toString()

+0

好的,我會嘗試瞭解UUID.randomUUID()。toString()。 謝謝 – user2939293 2014-09-05 19:21:36