Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.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

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,我一直在努力找出我正在编写的程序出了什么问题。以下是我尝试做的全部描述: 使用编程练习9.7中创建的Account类模拟ATM机。在id为0、1、…、的数组中创建十个帐户,9美元,初始余额为100美元。系统提示用户输入id。如果输入的id不正确,请要求用户输入正确的id。接受id后,将显示主菜单,如示例运行中所示。您可以输入选项1查看当前余额,2取款,3存款,4退出主菜单。退出后,系统将再次提示输入id。因此,一旦系统启动,它将不会停止 该程序现在仅在每次购买后显示默认的$100。我意识到问题在

我一直在努力找出我正在编写的程序出了什么问题。以下是我尝试做的全部描述: 使用编程练习9.7中创建的Account类模拟ATM机。在id为0、1、…、的数组中创建十个帐户,9美元,初始余额为100美元。系统提示用户输入id。如果输入的id不正确,请要求用户输入正确的id。接受id后,将显示主菜单,如示例运行中所示。您可以输入选项1查看当前余额,2取款,3存款,4退出主菜单。退出后,系统将再次提示输入id。因此,一旦系统启动,它将不会停止

该程序现在仅在每次购买后显示默认的$100。我意识到问题在于每次交易后都会重新创建我的帐户。我的问题基本上是我可以做什么,或者我可以在哪里重写帐户创建,这样我就避免了这个问题。我是编程新手,所以我还在努力。提前谢谢

import java.util.Date;
import java.util.Scanner;
public class test {

    public static void main(String[] args) {

            mainMenuOptions();      
    }
            //main menu option method
    public static void mainMenuOptions(){
        Scanner input = new Scanner(System.in);
        //enter id
        System.out.println("Enter an id: "); 
        int id = input.nextInt();
        //create accounts
          Account [] accounts = new Account[10];
        //initialize 100 dollars
        for (int i = 0; i < accounts.length; i++) { 
            accounts[i] = new Account(i, 100); 
        }
        int index = -1; 
        for(int i = 0; i < accounts.length; i++) {
            if(accounts[i].getid() == id) {
            index = i; 
            i = accounts.length;
            }               
        }
        if(id <= 9){
            //main menu
            mainMenu();
            //user enters choice in main menu   
            int enterchoice = input.nextInt();                          
            if(enterchoice == 1){
                System.out.println("The balance is " + accounts[index].getbalance());
                mainMenuOptions();
            }
            else if(enterchoice == 2){
                System.out.println("Enter an amount to withdraw ");
                double amount = input.nextDouble();
                //withdraw method
                accounts[index].withdraw(amount);
                mainMenuOptions();
            }
            else if(enterchoice == 3){
                System.out.println("Enter an amount to deposit ");
                double amount = input.nextDouble();
                //deposit method
                accounts[index].deposit(amount);
                mainMenuOptions();
            }
            else if(enterchoice == 4){
                mainMenuOptions();
            }   
        }
        else{
            System.out.println("Please enter a correct id");
            mainMenuOptions();
        }

    }
    //main menu method
    public static void mainMenu(){
        System.out.println("Main menu"+"\n1:check balance"+"\n2:withdraw"
                +"\n3:deposit"+"\n4:exit"+"\nEnter a choice");

    }
    }
        class Account{
            private int id = 0;
            private double balance = 0;
            private double withdraw = 0;
            private double deposit = 0;
            private double amount = 0;

            Account(){
            }

            Account(int id, double balance){
                this.id = id;
                this.balance = balance;
            }

            public int getid(){
                return this.id;

            }
            public void setid(int newid){
                id = newid;
            }
            public double getbalance(){
                return this.balance;
            }
            public void withdraw(double amount){
                balance = balance - amount;
            }

            public void deposit(double amount){
                balance = balance + amount;
            }
        }
导入java.util.Scanner

public class test {

    private static Account[] accounts = new Account[10];

    public static void main(String[] args) {
        accounts();
        mainMenuOptions();      
}
    //main menu option method
    public static void mainMenuOptions() {
        Scanner input = new Scanner(System.in);

        int enterchoice = -1;
        int id=-1;
        while (enterchoice != 4) {
          mainMenu();
          System.out.println("Enter an id: ");
          id = input.nextInt();
          //enter id
          System.out.println("Enter choice:  ");
           enterchoice = input.nextInt();

          int index = -1;
          for (int i = 0; i < accounts.length; i++) {
            if (accounts[i].getid() == id) {
              index = i;
              break;
            }
          }
          if (enterchoice == 1) {
            System.out.println("The balance is " + accounts[index].getbalance());       
          } else if (enterchoice == 2) {
            System.out.println("Enter an amount to withdraw ");
            double amount = input.nextDouble();
            //withdraw method
            accounts[index].withdraw(amount);               
          } else if (enterchoice == 3) {
            System.out.println("Enter an amount to deposit ");
            double amount = input.nextDouble();
            //deposit method
            accounts[index].deposit(amount);
          } 
        }
      }

     public static void accounts() {
        //create accounts
        //initialize 100 dollars
        for (int i = 0; i < accounts.length; i++) {
            accounts[i] = new Account(i, 100);
        }
    }
    //main menu method
    public static void mainMenu(){
        System.out.println("Main menu"+"\n1:check balance"+"\n2:withdraw"
                +"\n3:deposit"+"\n4:exit");

    }
    }
        class Account{
            private int id = 0;
            private double balance = 0;
            private double withdraw = 0;
            private double deposit = 0;
            private double amount = 0;

            Account(){
            }

            Account(int id, double balance){
                this.id = id;
                this.balance = balance;
            }

            public int getid(){
                return this.id;

            }
            public void setid(int newid){
                id = newid;
            }
            public double getbalance(){
                return this.balance;
            }
            public void withdraw(double amount){
                balance = balance - amount;
            }

            public void deposit(double amount){
                balance = balance + amount;
            }
        }
公共类测试{
私人静态账户[]账户=新账户[10];
公共静态void main(字符串[]args){
账户();
mainMenuOptions();
}
//主菜单选项方法
公共静态无效mainMenuOptions(){
扫描仪输入=新扫描仪(System.in);
int enterchoice=-1;
int id=-1;
while(enterchoice!=4){
主菜单();
System.out.println(“输入id:”);
id=input.nextInt();
//输入id
System.out.println(“输入选项:”);
enterchoice=input.nextInt();
int指数=-1;
对于(int i=0;i
每次“事务”完成时,您都会递归调用mainMenuOptions()。此函数用于每次重新创建所有帐户


您应该只创建一次帐户,最好是在main调用之后和mainMenuOptions()之前,在名为outside mainMenuOptions()的单独函数上创建。为此,您必须使accounts数组成为主类(test)的属性,或将其传递给mainMenuOptions()。

尝试将accounts对象移到mainMenuOptions方法之外,并在类下声明它


在调用对象后,对象在方法末尾被销毁

您正在调用
main菜单选项()
,这将使所有帐户初始化回$100

我怀疑您希望保持程序运行,并且您正试图通过调用
mainMenuOptions()
来实现这一目标

要保持程序运行,请尝试:

  • 在调用一次get的单独方法中初始化
    mainMenuOptions()
    之外的帐户
  • 然后实际调用main方法,在该方法中您从用户接收一个选项,并且仅当用户输入一个退出选项-4时才退出
例如:

mainMenu();
System.out.println("Enter Option: "); 
int option = input.nextInt();
while(option != 4) { // keep looping unless user wants to exit
// process the option [deposit, withdrawal etc]

mainMenu();
System.out.println("Enter Option: "); 
int option = input.nextInt();
}

//at this point the user selected exit and you can terminate or do whatever
你可以试试这样的。这样做的目的是,在用户决定离开之前,不断向用户询问一个选项。你可以适应你的需要

编辑:

公共类测试{
私人静态账户[]账户=新账户[10];
公共静态void main(字符串[]args){
账户();
mainMenuOptions();
}
//主菜单选项方法
公共静态无效mainMenuOptions(){
扫描仪输入=新扫描仪(System.in);
int enterchoice=-1;
int id=-1;
while(enterchoice!=4){
主菜单();
System.out.println(“输入选项:”);
enterchoice=input.nextInt();
//输入id
System.out.println(“输入id:”);
id=input.nextInt();
int指数=-1;
对于(int i=0;imainMenu();
System.out.println("Enter Option: "); 
int option = input.nextInt();
while(option != 4) { // keep looping unless user wants to exit
// process the option [deposit, withdrawal etc]

mainMenu();
System.out.println("Enter Option: "); 
int option = input.nextInt();
}

//at this point the user selected exit and you can terminate or do whatever
    public class test {

      private static Account[] accounts = new Account[10];

  public static void main(String[] args) {

      accounts();
      mainMenuOptions();
    }
    //main menu option method
  public static void mainMenuOptions() {
    Scanner input = new Scanner(System.in);

    int enterchoice = -1;
    int id=-1;
    while (enterchoice != 4) {
      mainMenu();
      System.out.println("Enter choice: ");
      enterchoice = input.nextInt();
      //enter id
      System.out.println("Enter an id: ");
       id = input.nextInt();

      int index = -1;
      for (int i = 0; i < accounts.length; i++) {
        if (accounts[i].getid() == id) {
          index = i;
          break;
        }
      }
      if (enterchoice == 1) {
        System.out.println("The balance is " + accounts[index].getbalance());
      } else if (enterchoice == 2) {
        System.out.println("Enter an amount to withdraw ");
        double amount = input.nextDouble();
        //withdraw method
        accounts[index].withdraw(amount);
      } else if (enterchoice == 3) {
        System.out.println("Enter an amount to deposit ");
        double amount = input.nextDouble();
        //deposit method
        accounts[index].deposit(amount);
      } 
    }
  }

  public static void accounts() {
    //create accounts
    //initialize 100 dollars
    for (int i = 0; i < accounts.length; i++) {
      accounts[i] = new Account(i, 100);
    }
  }

  //main menu method
  public static void mainMenu() {
    System.out.println("Main menu" + "\n1:check balance" + "\n2:withdraw" + "\n3:deposit" + "\n4:exit" + "\nEnter a choice");

  }
public class test {

private Account [] accounts = new Account[10];

public static void main(String[] args) {

        mainMenuOptions();      
}
        //main menu option method
public static void mainMenuOptions(){
    Scanner input = new Scanner(System.in);
    //enter id
    System.out.println("Enter an id: "); 
    int id = input.nextInt();

    //initialize 100 dollars
    for (int i = 0; i < accounts.length; i++) { 
        accounts[i] = new Account(i, 100); 
    }
    int index = -1; 
    for(int i = 0; i < accounts.length; i++) {
        if(accounts[i].getid() == id) {
        index = i; 
        i = accounts.length;
        }               
    }
 public class test {

public static void main(String[] args) {
        Account [] accounts = new Account[10];
        mainMenuOptions(accounts);      
}
        //main menu option method
public static void mainMenuOptions(Account accounts){
    Scanner input = new Scanner(System.in);
    //enter id
    System.out.println("Enter an id: "); 
    int id = input.nextInt();

    //initialize 100 dollars
    for (int i = 0; i < accounts.length; i++) { 
        accounts[i] = new Account(i, 100); 
    }
    int index = -1; 
    for(int i = 0; i < accounts.length; i++) {
        if(accounts[i].getid() == id) {
        index = i; 
        i = accounts.length;
        }               
    }
//initialize 100 dollars
    for (int i = 0; i < accounts.length; i++) { 
        accounts[i] = new Account(i, 100); 
    }
    public class test {

private static Account [] accounts = new Account[10];

public static void main(String[] args) {

        mainMenuOptions();      
}
    private final int EURO200 = 200;
    private final int EURO50 = 50;
    private final int EURO20 = 20;
    private final int EURO10 = 10;
    private final int EURO5 = 5;
210/200 = 1 //(rest 10) One 200 euro bill
10/10 = 1   //(rest 0)  One 10 euro bill