【问题标题】:Bank Account ArrayList银行账户数组列表
【发布时间】:2014-09-26 02:38:36
【问题描述】:

我的老师向我们展示了如何使用 ArrayList 来存储信息,但我遇到了麻烦。我不明白的是如何引用我存储在数组列表中的“帐户”,然后对其应用方法。例如,我正在尝试对存储在 ArrayList 中的帐户使用“存款”方法。

import java.util.Scanner;
import java.util.ArrayList;
public class Engine
{
public static void Engine()
{
    ArrayList<BankAccount> accounts = new ArrayList<BankAccount>();
    Scanner Reader = new Scanner(System.in);
    BankAccount n = new BankAccount();
    String response = Reader.nextLine();
    boolean keepGoing = true;
    while(keepGoing)
    {
        System.out.println("Welcome to The Bank of Money, what would you like to do?\n   enter code hereenter n to create a new account, enter e to use an existing account, or     enter q to quit to main menu");

        response = Reader.nextLine();
        if(response.equals("q")) keepGoing = false;
        if(response.equals("n")) accounts.add(new BankAccount());
        if(response.equals("e"))System.out.println("what is your account number?");
        String accountNum = Reader.nextLine();  

    }
    System.out.println("press 1 to deposit money");
    System.out.println("press 2 to withdraw money");
    System.out.println("press 3 to check your account balance");
    System.out.println("press 4 to check your account's interest");
    System.out.println("press 5 to quit");
    String response2 = Reader.nextLine();
    if (Reader.nextLine().equals("1"))
    {
        for(int i = 0; i<accounts.size();i++)
        {
            if (accounts.get(i).equals(accountNum))
            {
                accounts.get(i).deposit(amount);

            }
        }
    }
}
}

我更新的代码

【问题讨论】:

  • 我希望我提供了足够的信息,任何帮助将不胜感激
  • 银行账户数组列表,然后呢?我们不需要你老师教的东西?
  • 你将如何检查用户输入?我想 switch 语句将是更好的选择,如果也是。不是吗?
  • 如果您在 BankAccount 类中有一个 id 字段,则遍历每个对象的数组列表,使用 getter 获取 id 并将其与输入 id 进行比较(如果等于执行操作)

标签: java arraylist nested-loops


【解决方案1】:

“我怎么说“如果用户输入1,使用存款方式?”

if (Reader.nextLine().equals("1")
{
    // Call deposit method on correct arraylist item.
}

现在,根据您提供的代码,我不知道您的程序的上下文,但看起来您正在为 BankAccount 的每个实例提供一个银行帐号..? 这是一个有用的标识符,因为它们可能都是唯一的。 收到正确的输入后,您可以简单地遍历 arraylist 中的所有银行账户,直到找到具有正确帐号的银行账户,然后调用 deposit:

if (Reader.nextLine().equals("1")
{
    for (int i = 0; i<accounts.size(); i++
    {
        if (accounts.get(i).getAccountNum().equals(accountNum)) // Use a getter here
        {
            accounts.get(i).deposit(amount to deposit);
        }
    }
}

..或类似的东西...

【讨论】:

  • 谢谢这真的很有帮助,只是另一个后续问题,我使用了你上面写的代码,我想我理解了。我用“双倍金额”替换了“存款金额”,但我收到了一个名为“.class”的语法错误。我不知道如何解决这个问题,我相信答案是相当基本的,我只是仍在尝试了解基础知识,任何帮助将不胜感激。为什么需要一个类名,我该如何解决?
  • 你已经在调用对象的方法,所以你不需要将类型传递给方法。只有变量。因此,一旦您将金额变量设置为一个值,将该变量传递给该方法。换句话说,存款(金额)......
  • 好的 - 在这一行中,在银行账户类 public void deposit(double amount) 中,我是否将变量“amount”定义为参数中的 double 类型?
  • 如果我在我的银行账户类中定义了一个变量,例如 - “private int accountNum;”为什么我的引擎类无法识别该变量?我需要在两个类中初始化或定义变量吗?如果是这样,我应该把它放在我的程序中的什么地方?感谢您的帮助
  • 您应该在您的银行帐户类中定义一个名为 deposit 的方法,该方法接受双倍金额并对其进行处理。然后,您可以在调用该方法时为该方法提供任何值,前提是它的类型为 double。您可能会从用户输入中获得要存入的金额是吗?
【解决方案2】:

您如何知道要从 ArrayList 中获取哪个 BankAccount?是否有多个 BankAccount,这就是您将它们存储在 ArrayList 中的原因?您想对 ArrayList 中的所有帐户运行存款方法吗?需要更清晰。 我仍然建议(在这种情况下)使用 switch 案例,其中案例类似于案例“1”://调用存款方法。等等等等。 看看这是否有帮助。如果您需要进一步的帮助,请告诉我。

【讨论】:

    【解决方案3】:

    //怎么说“如果用户输入1,使用存款方式?

    与您输入添加新帐户或使用存在相同的代码。然后您可以在创建帐户后获得用户想要执行的操作类型。

    如果是现有帐户,则将帐号作为输入并从arraylist中找到它

    如果您使用此代码,您将无法获取帐户

    for(int i = 0; i<accounts.size();i++)
    {
    accounts.get(i).deposit(double amount);
    }
    

    并为该帐号明确创建存款功能

    【讨论】:

      猜你喜欢
      • 2014-10-09
      • 2014-08-27
      • 2015-09-08
      • 1970-01-01
      • 1970-01-01
      • 2016-11-21
      • 1970-01-01
      • 1970-01-01
      • 2019-07-22
      相关资源
      最近更新 更多