Java 变量赋值问题
我正在创建一个项目,允许用户做什么,你通常可以与银行(创建,删除帐户,取款,存款,打印交易) 我的问题是打印事务。我可以打印一些东西,但是出现了错误的值。例如,创建银行账户时,需要输入期初余额(5.00)。当我打印事务时,什么也不会出现。所以我把钱存入同一个账户(10.00),当我打印时,前面的(5.00)出现,而(10.00)出现在交易日期中。然而,当我查看账户余额时,所有余额加起来就是它所显示的 有人能帮我解决问题吗Java 变量赋值问题,java,Java,我正在创建一个项目,允许用户做什么,你通常可以与银行(创建,删除帐户,取款,存款,打印交易) 我的问题是打印事务。我可以打印一些东西,但是出现了错误的值。例如,创建银行账户时,需要输入期初余额(5.00)。当我打印事务时,什么也不会出现。所以我把钱存入同一个账户(10.00),当我打印时,前面的(5.00)出现,而(10.00)出现在交易日期中。然而,当我查看账户余额时,所有余额加起来就是它所显示的 有人能帮我解决问题吗 package mainsample; import java.util.
package mainsample;
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
BankProcess bankProcess = new BankProcess();
TransactionProcess transactionProcess = new TransactionProcess();
Bank bank = new Bank();
BankAccount bankAccount = new BankAccount();
int input;
int selection;
while(true) {
System.out.println("");
System.out.println("######## MENU ########");
System.out.println("[1] Create an account");
System.out.println("[2] Print all existing accounts");
System.out.println("[3] Delete an account");
System.out.println("[4] Deposit");
System.out.println("[5] Withdraw");
System.out.println("[6] Print transactions");
System.out.println("[0] Exit");
System.out.println("######################");
System.out.println("Please choose one of the following: ");
selection = scan.nextInt();
switch (selection) {
case 0:
System.out.println("Exit Successful");
System.exit(0);
break;
case 1:
System.out.println("'[1] Create an account' has been selected.");
System.out.print("Account Id: ");
int accountId = scan.nextInt();
scan.nextLine();
System.out.print("Holder Name: ");
String holderName = scan.nextLine();
System.out.print("Holder Address: ");
String holderAddress = scan.nextLine();
System.out.print("Opening Balance: ");
double openingBalance = scan.nextDouble();
System.out.print("Open Date: ");
String openDate = scan.next();
bankAccount = new BankAccount(accountId, holderName, openingBalance, holderAddress, openDate);
bank.setAccounts(bankProcess.openNewAccount(bank.getAccounts(), bankAccount));
System.out.println("Successfully Added.");
break;
case 2:
System.out.println("'[2] Display all existing accounts' has been selected");
System.out.println("-----------------------------------------------------");
bank.getAccounts().forEach((i,b)->System.out.println(b));
System.out.println("-----------------------------------------------------");
break;
case 3:
System.out.println("[3] Delete an account has been selected");
System.out.println("Enter the account ID: ");
int accountNo = scan.nextInt();
bankAccount = bank.getAccount(accountNo); // get bankAccount from account id
bank.removeAccounts(bankProcess.removeAccount(bank.getAccounts(), bankAccount));
System.out.println("Account has been deleted.");
break;
case 4:
System.out.println("[4] Deposit has been selected");
System.out.println("Enter account ID: ");
int accountNumber = scan.nextInt();
System.out.println("Enter deposit amount: ");
double depositAmount = scan.nextDouble();
transactionProcess.deposit(bankAccount, depositAmount);
break;
case 5:
System.out.println("[5] Withdraw has been selected");
System.out.println("Enter account ID: ");
int accountNu = scan.nextInt();
System.out.println("Enter withdraw amount: ");
double withdrawAmount = scan.nextDouble();
transactionProcess.withdraw (bankAccount, withdrawAmount);
break;
case 6:
System.out.println("[6] Print Transaction has been selected");
System.out.println("Enter account ID: ");
int accountN = scan.nextInt();
bankAccount = bank.getAccount(accountN);
for (Transaction transaction: bankAccount.getTransactions()) {
// print transaction information ...
System.out.println(transaction.toString());
}
break;
default:
System.out.println("Your choice was not valid!");
}
}
}
}
包主样本;
/**
*
*@作者哈立德
*/
公共类事务处理过程{
公共无效存款(银行账户,双倍存款金额){
//获得当前余额
double currentBalance=bankAccount.getCurrentBalance();
//第一个参数:设置事务的Id
//第二个参数:设置事务的类型
//第三个参数:设置TransactionMount
//第四个参数:在交易前设置余额(用于记录)
交易交易=新交易(“存款”,当前余额,(整数)存款金额);
如果(存款金额您没有打电话:
bankAccount=bank.getAccount(accountN)
在第4点(存款)和第5点(取款)中指出您的银行账户
修正:
首先,您在Transaction Constructor中犯了一个错误
public Transaction( String transactionType, double transactionAmount, int transactionDate) {
this.transactionType = transactionType;
this.transactionAmount = transactionAmount;
this.transactionDate = transactionDate;
}
但你是这样分配的
Transaction transaction = new Transaction("Deposit", currentBalance, (int) depositAmount);
你的论点顺序完全错误。你为什么指定存款金额而不是日期。应该是这样的
Transaction transaction = new Transaction("Deposit", (int) depositAmount,date );
另外,当您创建一个新帐户时,您尚未将该金额添加到交易中。您正在使用此代码创建一个新帐户
bankAccount = new BankAccount(accountId, holderName, openingBalance, holderAddress, openDate);
bank.setAccounts(bankProcess.openNewAccount(bank.getAccounts(), bankAccount));
但您尚未将此初始金额添加到事务中。它应包含在bankAccount的构造函数中
Transaction transaction = new Transaction("Deposit", 0, (int) depositAmount);
if (depositAmount <= 0) {
System.out.println("Amount to be deposited should be positive");
} else {
//Set the updated or transacted balance of bankAccount.
bankAccount.setCurrentBalance(currentBalance + depositAmount);
//then set the MoneyAfterTransaction
bankAccount.addTransaction(transaction); // adds a transaction to the bank account
System.out.println(depositAmount + " has been deposited.");
}
您的bankaccount类别在哪里?是否可能您没有使用` bankaccount=bank.getAccount(accountNo)'获得实际的´来自案例4和案例5?@andresoviedo你是什么意思?@InsideFootball你要求用户输入帐号,但你没有得到那个帐号。你正在使用以前选择的帐号。@andresoviedo我如何修复它?我不明白你想说什么。第4点和第5点有效。我可以通过查看当前余额来测试它。事务处理工作不正常(打印)@andresoviedo,我正在测试他的应用程序并键入答案,看不到你的comment@Inside足球不,我会更好地解释:在案例4和5中,你不引用你选择的账户,但是,如果你在其他案例中选择了某个账户,你会引用该账户,或者,如果你没有选择任何选项,你会引用银行账户=new BankAccount();在第16行中实例化。@razcor您能指出哪个部分不正确。@razcor您可以将您的答案标记为“社区wiki”。查看您为什么将currentBalance更改为0?创建新帐户时,当前余额应为0。此外,您在Transaction Process Constructor中犯了一些错误。请检查它
Transaction transaction = new Transaction("Deposit", (int) depositAmount,date );
bankAccount = new BankAccount(accountId, holderName, openingBalance, holderAddress, openDate);
bank.setAccounts(bankProcess.openNewAccount(bank.getAccounts(), bankAccount));
Transaction transaction = new Transaction("Deposit", 0, (int) depositAmount);
if (depositAmount <= 0) {
System.out.println("Amount to be deposited should be positive");
} else {
//Set the updated or transacted balance of bankAccount.
bankAccount.setCurrentBalance(currentBalance + depositAmount);
//then set the MoneyAfterTransaction
bankAccount.addTransaction(transaction); // adds a transaction to the bank account
System.out.println(depositAmount + " has been deposited.");
}
Transaction Amount : 5.0 Transaction Type : Deposit Transaction Date: 4
Transaction Amount : 10.0 Transaction Type : Deposit Transaction Date: 10