在java中用简单的atm显示平衡

时间:2014-11-05 14:27:51

标签: java arrays sum

此代码为一台简单的ATM机建模,该机器可以存储,取出并以10个索引值的数组显示10个最新交易。

我的问题是我无法在10次存款后获得余额,余额似乎只是对我的数组中的值进行求和,而不包括在这10次之前进行的交易。我做错了什么?

import java.util.Scanner;
public class cashier2 {

    public static void main(String[] args) 

        {
            Scanner keyboard = new Scanner(System.in);
            int amount = 0;
            int choice = 0;
            int[] transactions = new int[10];
            int sum = 0;
            int balance = 0;

            while(choice != 4)
            {
                choice = menu();
                switch(choice)
                {
                case 1:
                    System.out.print("deposit");
                    sum = keyboard.nextInt();
                    if(sum == 0)
                    {
                        System.out.print("wrong amount");
                        System.out.println();
                        System.out.println();
                    }
                    else
                    {
                        amount = (int) + sum;
                        makeTransactions(amount, transactions);
                    }
                    break;
                case 2:
                    System.out.print("withdrawal ");
                    sum = keyboard.nextInt();
                    if(sum == 0)
                    {
                        System.out.print("wrong amount");
                        System.out.println();
                        System.out.println();
                    }
                    else
                    {
                        amount = (int) - sum;
                        makeTransactions(amount, transactions);
                    }

                    break;
                case 3:
                    showTransactions(transactions, balance);
                    break;
                case 4:
                    System.out.println("Exit");
                    break;

                }

            }

        }

            public static int menu()
            {
                Scanner keyboard = new Scanner(System.in);
                int choice = 0;

                System.out.println("Simple atm");
                System.out.println();
                System.out.println("1. deposit");
                System.out.println("2. withdrawal");
                System.out.println("3. balance");
                System.out.println("4. exit");
                System.out.println();
                System.out.print("your choice: ");
                choice = keyboard.nextInt();
                return choice;
            }

            public static void showTransactions(int[] transactions, int balance)
            {
                System.out.println();
                System.out.println("Tidigare transaktioner: ");
                System.out.println();

                for(int i = 0; i < transactions.length; i++)
                {
                    if(transactions[i] == 0)
                    {
                        System.out.print("");
                    }   
                    else
                    {
                        System.out.print(transactions[i] + "\n");
                        balance = balance + transactions[i];
                    }

                }
                System.out.println();
                System.out.println("Saldo: " + balance + " kr" + "\n");
                System.out.println();
            }

            public static void makeTransactions(int amount, int[] transactions)
            {
                int position = findNr(transactions);
                if (position == -1)
                {
                    moveTrans(transactions);
                        position = findNr(transactions);
                        transactions[position] = amount;
            }
                else
                {

                    transactions[position] = amount;
                }
            }       

            public static int findNr(int[] transactions)
            {
                int position = -1;

                for(int i = 0; i < transactions.length; i++)
                {
                    if (transactions[i] == 0)
                    {
                        position = i;
                        break;
                    }
                }
                return position;
            }



            //}
            public static void moveTrans(int [] transactions)
            {
                        for(int i = 0; i < transactions.length-1; i++)
                        {

                                transactions[i] = transactions[i + 1];
                        }

                        transactions[transactions.length-1] = 0;

                    }
                }

0 个答案:

没有答案