gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 04:03:53 24 4
gpt4 key购买 nike

我制作了一个提款机(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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com