用Java来实现一个简单的银行转账问题

解决方案 »

  1.   

    for exampleclass Account {
        String name;
        double balance;    public Account(String name) {
            this.name = name;
        }
        public Account(String name, double balance) {
            this.name = name;
            this.balance = balance;
        }
        public String getName() {return name;}    public double getBalnace() {return balance;}    public synchronized double take(double money) { //可以根据情况决定是否抛出异常
            if (balance >= money) {
                balance -= money;
                return money;
            }
            money = balance;
            balance = 0;
            return money;
        }    public synchronized void save(double money) { //可以根据情况决定是否抛出异常
            if (money < 0) {
                return;
            }
            balance += money;        
        }
    }public class ATM {
        public static void main(String[] args) {
            Account a1 = new Account("a1", 5000);
            Account a2 = new Account("a2", 3000);        transfer(a1, a2, 3000);
            transfer(a2, a1, 10000);
        }    public static boolean transfer(Account from, Acctount to, double money) {
            if (moeny > from.getBalance()) {
                System.out.printf("Account %s has no enough money to transfer.\n", from.getName());
                return false;
            }
            to.save(from.take(money));
            System.out.printf(Account %s transfers money[%.2f] to account %s.\n", from.getName(), money, to.getName());
            return true;
        }
    }