java - 简单的自动取款机。在 ATM 程序中获取零而不是交易

标签 java arrays methods

我制作了一个提款机(ATM)程序,但我不知道出了什么问题。一切正常,除了交易是一行零。我一定是搞砸了。我认为这与“showTransactions”方法有关。感谢您的帮助!

import java.util.Scanner;

public class ATM {
        private static int position = - 1;
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        // Set a value to the various 
        int amount = 0;
        int choice = 0;
        int sum;
        int balance = 0;
        int[] trans = new int[10];

        while (choice != 4) {
            choice = menu();
            switch (choice) {

            case 1:
                System.out.print("How much would you like to deposit?: ");
                System.out.println();

                sum = input.nextInt();

                if (sum == 0) {
                    System.out.print("Unable to deposit");
                    System.out.println();
                    System.out.println();
                } else {
                    balance += sum;
                    makeTransactions(trans, amount);
                }
                break;

            case 2:
                System.out.print("How much would you like to withdraw?");
                System.out.println();

                sum = input.nextInt();

                if (sum == 0 || sum > balance) {
                    System.out.print("Unable to withdraw");
                    System.out.println();
                    System.out.println();
                } else {
                    balance += - sum;
                    makeTransactions(trans, amount);
                }
                break;

            case 3:
                showTransactions(trans, balance);
                break;

            case 4:
                System.out.println("You chosed to end ");
                break;
            }

        }
    }

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

        System.out.println("Cash machine");
        System.out.println();
        System.out.println("------------------------");
        System.out.println("1 - Deposit            *");
        System.out.println("2 - Withdraw           *");
        System.out.println("3 - View transactions  *");
        System.out.println("4 - End cash machine   *");
        System.out.println("------------------------");
        System.out.println();
        System.out.println("Enter your choice: ");

        choice = input.nextInt();
        return choice;
    }

    public static void showTransactions(int[] trans, int balance) {
        System.out.println();
        System.out.println("Previous 10 transactions");
        System.out.println();

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

                else
                {
                    System.out.print(trans[i] + "\n");
                    balance = balance + trans[i];

                }

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

    }

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

    }

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

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

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

    }

}

最佳答案

case 1:
            System.out.print("How much would you like to deposit?: ");
            System.out.println();

            sum = input.nextInt();

            if (sum == 0) {
                System.out.print("Unable to deposit");
                System.out.println();
                System.out.println();
            } else {
                balance += sum;
                makeTransactions(trans, amount);
            }
            break;

在上面的代码中,当您调用 makeTransactions 方法时,您将 amount 作为参数传递,您永远不会更改它,即它始终为 0。我认为您应该传递sum 中,因为这是您存储用户输入值的位置。

关于java - 简单的自动取款机。在 ATM 程序中获取零而不是交易,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34578042/

相关文章:

c++ - 我将如何通过抽象类传递虚拟方法但可选择不覆盖?

java - Android:如何为应用程序创建一组演示幻灯片,以便在用户第一次打开应用程序时向用户展示?

java - AES加密输出长度

javascript - 我如何发送对象作为参数Javascript

javascript - 在 Javascript 中对整数数组执行计算

Ruby - 链接方法和返回数组

java - 如何从命令行检查 java 文件的任意样式列表?

java - 如何使用本地主机指定 mySQL 的路径?

c - 如何将 float 存储在数组中以供以后使用?

java - Android 不执行普通的 Java 类