Java 如何在arraylist中加和减数字(在我的特定条件下)?
在我的银行应用程序中,用户可以创建多个帐户。现在,我添加了一个额外的功能,以便它可以在不同的帐户内以及在同一帐户内执行交易。在这个时刻,在夏天,我不知道如何实现这一点 特别是:考虑到我在下面给出的代码块,一旦在数组列表中找到Java 如何在arraylist中加和减数字(在我的特定条件下)?,java,arrays,for-loop,arraylist,switch-statement,Java,Arrays,For Loop,Arraylist,Switch Statement,在我的银行应用程序中,用户可以创建多个帐户。现在,我添加了一个额外的功能,以便它可以在不同的帐户内以及在同一帐户内执行交易。在这个时刻,在夏天,我不知道如何实现这一点 特别是:考虑到我在下面给出的代码块,一旦在数组列表中找到提取账户,必须从提取账户的当前余额中减去提取金额。然后,该值必须添加到当前存款账户的余额中。当然,数组应该根据我所做的事务进行更新,以便能够显示最近的状态。 案例2:也应遵循此基本规则。 这是我此应用程序的完整代码: 银行应用程序分配:' package bankap
提取账户
,必须从提取账户
的当前余额中减去提取金额
。然后,该值必须添加到当前存款账户的余额中。当然,数组应该根据我所做的事务进行更新,以便能够显示最近的状态。
案例2:
也应遵循此基本规则。
这是我此应用程序的完整代码:
银行应用程序分配:'
package bankapp_assignment;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class BankApp_Assignment {
static int numOfAcc = 0;
public static void main(String[] args) {
System.out.println("WELCOME TO OUR BANK!\n\n");
List<BankAccount> bankAccounts = new ArrayList<BankAccount>();
Scanner sc = new Scanner(System.in);
int option1;
int option2;
double withdraw_accNum;
double deposit_accNum;
double withdraw_amount;
double dep_amount;
while (true) {
System.out.println("Choose your option:\n"
+ "1. Create new account\n"//done
+ "2. Deposit/withdraw\n"//working with this...
+ "3. View One account\n"//not used yet
+ "4. Deleting an account\n"//not used yet
+ "5. View all the accounts\n"//done
+ "6. Quit\n");//done
System.out.println("*************\n"
+ "************");
option1 = sc.nextInt();
sc.nextLine();
//switch-case starts
switch (option1) {
case 1:
//create account
BankAccount bankAcc = new BankAccount();
System.out.println("Enter Full Name:");
bankAcc.setName(sc.nextLine());
System.out.println("Choose an Account Number:");
bankAcc.setAccNum(sc.nextInt());
System.out.println("Choose the initial amount:");
bankAcc.setInitiateAmount(sc.nextDouble());
//adding those into the arrayList
bankAccounts.add(bankAcc);
System.out.println("-------------\n"
+ "-------------");
break;
case 2:
//First displaying the current accouns info
System.out.println("Name \tAccount No \tInitial Amount");
for (BankAccount bankAccount : bankAccounts) {
System.out.println(bankAccount);
}
System.out.println("\t\t.........\n"
+ "\t\t.........");
System.out.println("To transfer money within the bank accounts enter 1\n"
+ "To deposit/withdraw money in the same account enter 2");
option2 = sc.nextInt();
sc.nextLine();
//inner switch-case starts
switch (option2) {
case 1:
System.out.println("Enter the account number you want to withdraw from:");
withdraw_accNum = sc.nextDouble();
System.out.println("Enter the amount you want to withdraw:");
withdraw_amount = sc.nextDouble();
System.out.println("Enter the account number you want to deposit to:");
deposit_accNum = sc.nextDouble();//the deposit amount is alwyas the same as withdraw_amount
break;
case 2://deposit/withdraw money in the same accounts
System.out.println("Enter the account number you want to deposit or withdraw from:");
//read the accNum
System.out.println("Enter the amount (To withdraw enter a negative value)");
//read the amount
break;
}
//inner switch-case ends
System.out.println("\n\n");
break;
case 3:
//View One account
case 4:
//Deleting an account
case 5:
//View all the accounts/printing them out
System.out.println("Name\tAccount No\tInitial Amount");
for (BankAccount bankAccount : bankAccounts) {
System.out.println(bankAccount);
}
System.out.println("\n\n");
break;
case 6:
//Quit
return;
}
//switch-case ends
}
}
}
不要保留
BankAccount
的ArrayList
,而是保留一个HashMap
,其中key作为帐号,value作为BankAccount对象
Map bankAccounts=new HashMap()代码>
添加帐户时,只需执行以下操作-
bankAccounts.put(账户,银行账户)代码>
当你想减去取款金额时-
BankAccount BankAccount=bankAccounts.get(accNum)代码>
然后,您可以通过使用其设置器
和获取器
来操作金额
特别是:考虑到我在下面给出的代码块,一旦在数组列表中找到提款账户,必须从提款账户的当前余额中减去提款金额。在此之后,该值必须添加到存款账户的当前余额中。当然,数组应该根据我所做的事务进行更新,以便能够显示最近的状态。案例2:也应遵循这一基本规则
提款时检查输入的银行账号是否正确非常简单。我想你对此没有问题。您只需遍历所有arraylist元素,并检查每个银行帐户的accNum是否与给定的帐号匹配
操作arraylist元素非常简单
获取您感兴趣的银行帐户对象的引用
BankAccount b, acc = null;
for(int x=0; x<bankAccounts.size(); x++){
b = bankAccounts.get(x);
if(givenAcc == b.getAccNum())
acc = b;;
}
就这些。这很简单。只是一句话而已
我建议您将主方法模块化为子方法。您的BankAccount类中似乎还缺少许多mutator和acssor方法
建议使用扣减金额(双倍金额)
方法来扣减金额。阅读所有代码需要花费太多时间才能理解您想要什么。为了简单起见,您是否在问如何操作ArrayList中的对象?是的。你认为我应该重新问这个问题吗?事实上,它并不像你想象的那样大而模糊。你唯一需要读的是用粗体斜体写的内容。看看下面我的解决方案。实际上,这就像一行代码一样简单。只需获取对象引用并从中扣除费用即可<代码>科目扣减金额(amt)代码>用户3437460,谢谢,您的文字解释对我来说很有意义,但我在寻找您的编码解决方案时迷失了方向。首先,我已经创建了一个BankAccount对象,是否需要另一个类似于您命名为“b”的对象?在for循环中,从何处获取getAccNum()?你是说我必须创建这个方法才能在这里调用?其次,扣除金额(amt)也以同样的方式迷惑了我!希望听到您的声音。@Riyana正如我在解决方案中所说的,您必须在BankAccount类和runner类(主帐户所在的类)中创建许多方法。您最好创建像deductAmount()
这样的方法。如果不想这样做,可以使用setInitialAmount()进行扣减但这对我来说似乎很糟糕
<代码>b
只是一个变量。它可以是任何东西!当然,您必须声明一些东西来保存引用,如b
。但它可以是任何名称,最重要的是,它是数据类型BankAccount
的变量。
BankAccount b, acc = null;
for(int x=0; x<bankAccounts.size(); x++){
b = bankAccounts.get(x);
if(givenAcc == b.getAccNum())
acc = b;;
}
//Assume user already input amount to withdraw
if(acc != null) //if account exist
b.deductAmount(amt);
else
System.out.println("Account does not exist");