首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >银行账户TransferTo法

银行账户TransferTo法
EN

Stack Overflow用户
提问于 2014-07-03 23:42:02
回答 3查看 12.9K关注 0票数 0

好的,我有问题,创建一个转移到方法,以转移“钱”从一个帐户到下一个帐户。转帐后,每个帐户的金额将被打印出来。我创建了代码,但是当我运行它时,所转移的金额被设置为银行帐户金额。它应该从一个帐户中扣除并添加到下一个帐户。我做错了什么?

--这是我的类,有构造器和方法:

代码语言:javascript
复制
public class Account {
// Instance variables
private double balance;

// Constructors
public Account(double initialBalance) {
    balance = initialBalance;
}

public Account(int account, double balance) {
    this.balance = balance;
}

public Account() {
    balance = 0.0;
}

// Instance methods

public void setBalance() {
    balance = Math.random() * 1000;
    balance = Math.round((balance * 100.0)+.5) / 100.0;
}

public void deposit(double amount) {
    balance = balance + amount;
}

public void withdraw(double amount) {
    balance = balance - amount;
}

public double getBalance() {
    balance = Math.round((balance * 100.0)+.5) / 100.0;
    return balance;
}

public void close() {
    balance = 0.0;
}

public void transferTo(Account bank, double x) {
    if (x <= balance) {
        withdraw(x);
        bank.deposit(x);
        System.out.println("\nTransfer succesful. Tansfered: $" + bank.getBalance());
    } else if (x > balance) {
        System.out.println("\nTransfer failed, not enough balance!");
    }
}
}

--这是我的类,它的主要方法是

代码语言:javascript
复制
public class MyBank {

public static void main(String[] args) {

    Account[] bank = { new Account(), new Account(), new Account(),
            new Account() };

    bank[0].setBalance();
    bank[1].setBalance();
    bank[2].setBalance();
    bank[3].setBalance();

    System.out.println("Accounts 1 balance is: $" + bank[0].getBalance());
    System.out.println("Accounts 2 balance is: $" + bank[1].getBalance());
    System.out.println("Accounts 3 balance is: $" + bank[2].getBalance());
    System.out.println("Accounts 4 balance is: $" + bank[3].getBalance());

    double x = Math.random()*100;
    bank[0].transferTo(bank[1], x);
    System.out.println("Remaining balance of Account 1: $" + bank[0].getBalance());
    System.out.println("Remaining balance of Account 2: $" + bank[1].getBalance());

    double y = (Math.random()*300);
    bank[2].transferTo(bank[3], y);
    System.out.println("Remaining balance of Account 3: $" + bank[2].getBalance());
    System.out.println("Remaining balance of Account 4: $" + bank[3].getBalance());
}
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-07-03 23:50:18

您确实有一个问题,就是您在transferTo()方法中意外地打印了余额,而不是实际转移的金额。我修好了这个。另外,如果你要打印这些数字,查看printf()会让它们看起来像实际的美元金额。我这样做是为了给你举个例子。

PS --尝试在调试时不要使用Math.random()。

代码语言:javascript
复制
public void transferTo(Account bank, double x) {
    if (x <= this.balance) {
        withdraw(x);
        bank.deposit(x);
        System.out.println("\nTransfer succesful. Tansfered: $" + x);
    } else { //does not need to be else if, because if not <=, it MUST be >.
        System.out.println("\nTransfer failed, not enough balance!");
    }
}

在这些编辑之后,我可以在我的机器上验证这个方法是否工作得很好。这是我曾经测试过的:

代码语言:javascript
复制
public class MyBank {

public static void main(String[] args) {

    Account[] bank = { new Account(), new Account(), new Account(),
            new Account() };

    bank[0].setBalance();
    bank[1].setBalance();
    bank[2].setBalance();
    bank[3].setBalance();

    double x = 100.00;
    System.out.printf("Transferring $%.2f from Acc 1 to Acc 2.\n", x); //printf example
    System.out.println("Acc 1 previous balance: " + bank[0].getBalance());
    System.out.println("Acc 2 previous balance: " + bank[1].getBalance());
    bank[0].transferTo(bank[1], x);
    
    
    System.out.println("Acc 1 new balance: " + bank[0].getBalance());
    System.out.println("Acc 2 new balance: " + bank[1].getBalance());
        
        
}
}

最后,我的产出:

将100.00美元从行政协调会1转到行政协调会2。 行政协调会1以往余额: 106.76 行政协调会2以往余额: 266.18 转移成功。转款:100.0美元 行政协调会1新结余: 6.77 行政协调会2新结余: 366.19

票数 0
EN

Stack Overflow用户

发布于 2014-07-03 23:59:20

代码语言:javascript
复制
System.out.println("\nTransfer succesful. Tansfered: $" + bank.getBalance());

这是打印另一个帐户的新余额,因为这是你让它做的。

如果要打印转帐金额:

代码语言:javascript
复制
System.out.println("\nTransfer succesful. Tansfered: $" + x);
票数 0
EN

Stack Overflow用户

发布于 2019-09-19 00:15:31

代码语言:javascript
复制
// Bank account class
class BankAccount {
  constructor(fname, lname, account_number) {
    const minBalance = 10000;
    this.name = `${fname} ${lname}`;
    this.balance = minBalance;
    this.account_number = account_number;
  }

  details() {
    console.log(
      `Cleint name: ${this.name} \n Balance: ${this.balance} \n Account number: ${this.account_number}`
    );
  }

  isPositive(amount) {
    return amount > 0 ? true : false;
  }

  isVlaidAmount(amount) {
    return isNaN(amount) || !this.isPositive(amount) ? false : true;
  }

  deposit(amount) {
    if (this.isVlaidAmount(amount)) {
      this.balance += amount;
    } else {
      console.log("Sorry, this transcation cannot be completed!");
    }
  }

  withdraw(amount) {
    if (this.isVlaidAmount(amount)) {
      this.balance -= amount;
    } else {
      console.log("Sorry, you have insufficient funds.");
    }
  }

  transfer(amount, reciever) {
    if (this.isVlaidAmount(amount)) {
      this.withdraw(amount);
      reciever.deposit(amount);
    }
  }
}

// create objects
let acc1 = new BankAccount("George", "Omara", 422);
let acc2 = new BankAccount("Haward", "Walowets", 662);

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24564790

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档