Java 简单的自动取款机。在ATM程序中获取零而不是事务
我做了一个自动取款机(ATM)程序,但我不知道出了什么问题。除了事务是一行零之外,一切都在运行。我一定把事情搞砸了。。我认为“showTransactions”方法就是如此。谢谢你的帮助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
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)