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