Java 银行账户转帐法

Java 银行账户转帐法,java,methods,transfer,Java,Methods,Transfer,好的,我在创建转账到方法以将“钱”从一个帐户转移到下一个帐户时遇到问题。转账后,将打印每个账户的金额。我创建了代码,但运行代码时,转账金额设置为银行账户金额。它应该只从一个账户中扣除,然后添加到下一个账户中。我做错了什么 这是我的课程,包含构造函数和方法: public class Account { // Instance variables private double balance; // Constructors public Account(double initialBalanc

好的,我在创建转账到方法以将“钱”从一个帐户转移到下一个帐户时遇到问题。转账后,将打印每个账户的金额。我创建了代码,但运行代码时,转账金额设置为银行账户金额。它应该只从一个账户中扣除,然后添加到下一个账户中。我做错了什么

这是我的课程,包含构造函数和方法:

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!");
    }
}
}

您遇到的一个问题是,您在
transferTo()
方法中意外打印了余额,而不是实际转账的金额。我把这个修好了。另一方面,如果您要打印这些数字,请将它们显示为实际的美元金额。我对其中一行这样做是为了给大家展示一个例子

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

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!");
    }
}
最后,我的输出:

从Acc 1向Acc 2转账100.00美元

Acc 1以前的余额:106.76

Acc 2以前的余额:266.18

转移成功。转帐:100美元

Acc 1新余额:6.77

Acc 2新余额:366.19

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

如果要打印转账金额,请执行以下操作:

System.out.println("\nTransfer succesful. Tansfered: $" + x);
//银行账户类
类别银行帐户{
构造函数(fname、lname、帐号){
const minBalance=10000;
this.name=`${fname}${lname}`;
this.balance=minBalance;
this.account\u number=账号;
}
详情(){
console.log(
`Cleint name:${this.name}\n余额:${this.Balance}\n账号:${this.Account\u number}`
);
}
正(数量){
退货金额>0?真:假;
}
isVlaidAmount(金额){
返回isNaN(金额)| |!this.isPositive(金额)?false:true;
}
押金(金额){
如果(本金额){
此余额+=金额;
}否则{
log(“对不起,此转换无法完成!”);
}
}
提取(金额){
如果(本金额){
此余额-=金额;
}否则{
log(“对不起,您没有足够的资金。”);
}
}
转账(金额、收款人){
如果(本金额){
此项。提取(金额);
收款人.押金(金额);
}
}
}
//创建对象
让acc1=新银行账户(“乔治”,“奥马拉”,422);

let acc2=新银行账户(“Haward”,“Walowets”,662)-1这不是错误,不会阻止代码工作。这纯粹是一个偏好问题。@immibis已编辑,感谢您的确认。意识到我错了。
x()
应该仍然是
x
。谢谢!这很有效。我知道这和平衡有关,我就是想不出来。再次感谢你@维克多,没问题!如果你对它满意,请考虑投票和/或标记我的答案正确。请解释问题和你的答案如何解决它。抱歉没有记录代码,有我的第一个帖子。下次我会做得更好。代码旨在展示一种使“transferTo()”方法工作的方法。但是,在我的代码中,我将方法命名为“transfer”,这没有问题。您可以使用描述编辑当前答案。
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());
        
        
}
}
System.out.println("\nTransfer succesful. Tansfered: $" + bank.getBalance());
System.out.println("\nTransfer succesful. Tansfered: $" + x);