如何跟踪银行账户的余额?

时间:2014-12-19 11:02:02

标签: java arrays loops arraylist counter

我打算创建一个跟踪银行账户余额的程序。程序应使用一个循环,一直持续到用户选择退出 来解决问题 你想继续吗?

在循环中,应要求用户输入金额(存款为正,退出为负)。金额应从账户余额变量中加/减。所有存款/取款都应保存为历史记录,以便我们以后再打印。当用户选择退出循环时,将打印当前帐户余额以及帐户历史记录(来自数组/ ArrayList)。

现在,我想使用一个包含10个广告位的数组作为历史记录功能。

我的问题是如何跟踪所有存款,取款和当前帐户余额(使用包含十个历史记录功能插槽的阵列),以便我可以在用户退出时将其打印出来该计划?

我的代码:

BankApp课程:

package bankapp;

import java.util.Scanner;

public class BankApp {

    public static void main(String[] args) {

        Scanner input = new Scanner(System.in);
        askingUser au = new askingUser();

        System.out.println("WELCOME TO OUR BANK!\nYou have 100 SEK by default in your account.");

        while (true) {

            au.userInput();

            System.out.println("Do you want to continue? Answer by Yes or No.");
            String yesOrNo = input.next();

            if (yesOrNo.equalsIgnoreCase("yes")) {

                au.userInput();

            } else if (yesOrNo.equalsIgnoreCase("no")) {
                System.out.println("History: ");

                //print out the transaction history
                System.exit(0);

            } else {

                System.out.println("Invalid character input.");

            }

        }

    }
}

askUser class:

package bankapp;

import java.util.Scanner;

public class askingUser {

    Scanner input = new Scanner(System.in);
    double initialBal = 100;

    public void userInput() {
        System.out.println("Enter your amount: (+ve for deposit & -ve for withdraw)");
        double inputAmount = input.nextDouble();

        if (inputAmount >= 0) {

            double newPosAm = initialBal + inputAmount;
            System.out.println("Your current balance is: " + newPosAm + " SEK");

        } else {

            double newNegAm = initialBal + inputAmount;
            System.out.println("Your current balace is: " + newNegAm + " SEK");
        }

    }

}

2 个答案:

答案 0 :(得分:1)

如果使用数组,则必须跟踪存储在其中的元素数量,并在必要时调整数组大小。最简单的方法是将历史记录保存为ArrayList中的字符串。您将为每个事务向该列表添加一条消息:

ArrayList<String> history = new ArrayList<String>();

void addToHistory(String transaction) {
    history.add(transaction);
}

void printHistory() {
    for(String s : history) {
        System.out.println(s);
    }
}

addToHistory("Withdrawal: 100 SEK" );
addToHistory("Deposit: 200 SEK" );
printHistory();

答案 1 :(得分:1)

您需要队列来执行此操作。但是,对于简单,快速和原始的实现,您可以:

  • 定义名为Transactiondeposit - double, withdraw - double, current account balance - double
  • 的对象
  • List TransactionaskingUser添加到AskingUser课程中,作为属性。我强烈建议将类名重命名为Transaction,以使其被视为对象。
  • 在每次操作中添加一个新的List到您刚添加的List的结尾。
  • 退出时,打印askingUser的最后一个-say-10个元素;您可以通过askingUser对象访问它。您还可以在Transaction类中定义一个函数来打印最后10个元素,如果您根据选定的元素数量使函数工作,您可以将{{1}}的数量添加到函数&#39 ; s输入。