Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在arraylist中加和减数字(在我的特定条件下)?_Java_Arrays_For Loop_Arraylist_Switch Statement - Fatal编程技术网

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