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 简单的自动取款机。在ATM程序中获取零而不是事务_Java_Arrays_Methods - Fatal编程技术网

Java 简单的自动取款机。在ATM程序中获取零而不是事务

Java 简单的自动取款机。在ATM程序中获取零而不是事务,java,arrays,methods,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

我做了一个自动取款机(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];

    }

}
import java.util.Scanner;
公共级自动取款机{
私有静态int位置=-1;
公共静态void main(字符串[]args){
扫描仪输入=新扫描仪(System.in);
//将值设置为各个
整数金额=0;
int-choice=0;
整数和;
国际收支平衡=0;
int[]trans=新的int[10];
while(选项!=4){
选择=菜单();
开关(选择){
案例1:
System.out.print(“您想存多少?:”;
System.out.println();
sum=input.nextInt();
如果(总和=0){
系统输出打印(“无法存款”);
System.out.println();
System.out.println();
}否则{
余额+=总和;
进行交易(交易记录、金额);
}
打破
案例2:
System.out.print(“您想提取多少?”);
System.out.println();
sum=input.nextInt();
如果(总和==0 | |总和>余额){
系统输出打印(“无法提取”);
System.out.println();
System.out.println();
}否则{
余额+=-和;
进行交易(交易记录、金额);
}
打破
案例3:
显示交易(交易记录、余额);
打破
案例4:
System.out.println(“您选择结束”);
打破
}
}
}
公共静态int菜单(){
扫描仪输入=新扫描仪(System.in);
int-choice=0;
System.out.println(“提款机”);
System.out.println();
System.out.println(“---------------------------”);
System.out.println(“1-存款*”);
System.out.println(“2-撤回*”);
System.out.println(“3-查看事务*”);
System.out.println(“四端提款机*”);
System.out.println(“---------------------------”);
System.out.println();
System.out.println(“输入您的选择:”);
choice=input.nextInt();
回报选择;
}
公共静态无效交易(整数[]交易,整数余额){
System.out.println();
System.out.println(“前10笔交易”);
System.out.println();
对于(int i=0;i

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

您的逻辑是如果trans[I]等于0,则打印为什么?也许会改变

if(trans[i] == 0)


或者为什么不把它们全部打印出来,反正它们都是事务的一部分。

复制这个问题的最简单输入是什么?当您在调试器中单步执行代码时,您看到了什么?也同意@SnehSorry的说法,我尝试了一些其他选项,但忘了更改它。。我的错!
if(trans[i] == 0)
if(trans[i] != 0)