简体   繁体   中英

How do I store multiple values (with different types) in an array and print them out?

My program asks the user to create a bank account. At the moment it can create only one account and print it out. I want to extend my program so that it can create muliple accounts by choosing the menu option again and again and finally print all the account details.

package bankapp_assignment;

import java.util.Scanner;

public class BankApp_Assignment {

    public static void main(String[] args) {
        BankAccount[] accounts = new BankAccount[10];

        Scanner sc = new Scanner(System.in);

        int userChoose;
        String name = null;
        int accNum = 0;
        double initiateAmount = 0;
        double newAmm = 0;

        double depOrWith = 0;
        System.out.println("WELCOME TO OUR BANK!\n\n"
                + "...................\n"
                + "...................\n\n"
                + "Choose your optiin:\n"
                + "1. Create new account\n"
                + "2. View all the accounts property\n"
                + "3. Quit\n\n");

        System.out.println("*************\n"
                + "************");
        while (true) {
            userChoose = sc.nextInt();
            sc.nextLine();
            if (userChoose == 1) {
                /*the user must be able to create multiple accounts, let's say 10 accounts for instance
                 To open another new account the user should choose the menu option "1" again and continue...
                 */
                System.out.println("Enter your full name:");
                name = sc.nextLine();

                System.out.println("Choose an account number:");

                accNum = sc.nextInt();

                System.out.println("Enter an initiating amount:");

                initiateAmount = sc.nextDouble();
                System.out.println("\n-----------\n"
                        + "------------");
            } else if (userChoose == 2) {//view all the accounts property (including account number and initial balance)

            } else if (userChoose == 3) {
                System.exit(0);

            }
        }

    }

}

BankAccount:

package bankapp_assignment;

public class BankAccount {
    public void createAcc(){

    }
}

EDIT after Naman's answer:

    public static void main(String[] args) {
        BankAccount[] accounts = new BankAccount[10];

        Scanner sc = new Scanner(System.in);

        int userChoose;
        String name = null;
        int accNum = 0;
        double initiateAmount = 0;
        double newAmm = 0;

        double depOrWith = 0;
        System.out.println("WELCOME TO OUR BANK!\n\n"
                + "...................\n"
                + "...................\n\n"
                + "Choose your optiin:\n"
                + "1. Create new account\n"
                + "2. View all the accounts property\n"
                + "3. Quit\n\n");

        System.out.println("*************\n"
                + "************");
        while (true) {
            userChoose = sc.nextInt();
            sc.nextLine();
            if (userChoose == 1) {
                /*the user must be able to create multiple accounts, let's say 10 accounts for instance
                 To open another new account the user should choose the menu option "1" again and continue...
                 */
                System.out.println("Enter your full name:");
                name = sc.nextLine();

                System.out.println("Choose an account number:");

                accNum = sc.nextInt();

                System.out.println("Enter an initiating amount:");

                initiateAmount = sc.nextDouble();
                System.out.println("\n-----------\n"
                        + "------------");

accounts[numOfAcc]=bankAcc;
                numOfAcc++;

            } else if (userChoose == 2) {//view all the accounts property (including account number and initial balance)

   for(BankAccount bankAccount: accounts){

                  System.out.println("Your name: " + name);
                 System.out.println("Your account number: " + accNum);
                 System.out.println("Your current balance: " + initiateAmount);
                 System.out.println("\n-----------\n"
                 + "------------");  

                  }



            } else if (userChoose == 3) {
                System.exit(0);

            }
        }

    }

}

If you want to continue with array then you can do like initializing static variable first:

static int number = 0;

Change your block as below:

 if (userChoose == 1) {
    BankAccount ac = new BankAccount();
    //set account properties;
    accounts[number] = ac;
    number++;
 }

You can retrieve array like below:

for(BankAccount bankAccount: accounts){
   //bankAccount.getProperty();
}

Your code should be like

BankAccount bankAcc = null;
   if (userChoose == 1) {
       bankAcc = new BankAccount(); 
                /*the user must be able to create multiple accounts, let's say 10 accounts for instance
                 To open another new account the user should choose the menu option "1" again and continue...
                 */
                System.out.println("Enter your full name:");
                name = sc.nextLine();
                bankAcc.setName(name);//setter method of your bankAccount bean
                System.out.println("Choose an account number:");

                accNum = sc.nextInt();
                bankAcc.setAccountNum(accNum);
                System.out.println("Enter an initiating amount:");

                initiateAmount = sc.nextDouble();
                bankAcc.setInitialAmount(initialAmount);
                System.out.println("\n-----------\n"
                        + "------------");

accounts[numOfAcc]=bankAcc;
                numOfAcc++;

            }

Retrieve like as below:

else if (userChoose == 2) {//view all the accounts property (including account number and initial balance)

   for(BankAccount bankAccount: accounts){

                  System.out.println("Your name: " + bankAccount.getName());
                 System.out.println("Your account number: " + bankAccount.getAccountNum());
                 System.out.println("Your current balance: " + bankAccount.getInitialAmount());
                 System.out.println("\n-----------\n"
                 + "------------");  

                  }

1) Create an object class: for example

class BankAccount{
    private String userName;
    private String userSurname;
    private String birthDay;
    private int accountNumber;
    private int ibanNo;
    private int balance;
    public BankAccount(String userName, String userSurname, String birthDay, int accountNumber, int ibanNo, int balance) {
        super();
        this.userName = userName;
        this.userSurname = userSurname;
        this.birthDay = birthDay;
        this.accountNumber = accountNumber;
        this.ibanNo = ibanNo;
        this.balance = balance;
    }
    public String getUserName() {
        return userName;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }
    public String getUserSurname() {
        return userSurname;
    }
    public void setUserSurname(String userSurname) {
        this.userSurname = userSurname;
    }
    public String getBirthDay() {
        return birthDay;
    }
    public void setBirthDay(String birthDay) {
        this.birthDay = birthDay;
    }
    public int getAccountNumber() {
        return accountNumber;
    }
    public void setAccountNumber(int accountNumber) {
        this.accountNumber = accountNumber;
    }
    public int getIbanNo() {
        return ibanNo;
    }
    public void setIbanNo(int ibanNo) {
        this.ibanNo = ibanNo;
    }
    public int getBalance() {
        return balance;
    }
    public void setBalance(int balance) {
        this.balance = balance;
    }

}

2) Create a global List with this object in your main class;

List<BankAccount> accounts = new ArrayList<BankAccount>();

3) Now you can add new accounts to your list;

accounts.add(new BankAccount(String userName, String userSurname, String birthDay, int accountNumber, int ibanNo, int balance));

4) Now you can add / get / remove accounts with using accounts list.

Create object of the bank account details and simply add to ArrayList Use ArrayList data type from java.util package Create a class with Bank account details in it simply import it to this class and write following code

List <BankAccount> accounts = new <BankAccount> ArrayList();
BankAccount object = new BankAccount();
//Set field here like

System.out.println("Enter your full name:");
                name = sc.nextLine();

                System.out.println("Choose an account number:");

                accNum = sc.nextInt();

                System.out.println("Enter an initiating amount:");

                initiateAmount = sc.nextDouble();

after that simple use

accounts.add(object);

it is perfect to store the generic data types or objects in such cases, also use the switch cases over the if -then- else blocks its much readable and convinient

also use enhaced for loop to view accounts

for(BankAccount account:accounts){
System.out.println("ALL DETAILS FROM OBJECT");
}

The complete code with the working answer

package tester;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class BankApp {

    static class BankAccount {
        private String name;
        private int accNum;
        private double initiateAmount;

        public BankAccount() {
            this.name = null;
            this.accNum = 0;
            this.initiateAmount = 0;
        }

        public void setAccNum(int accNum) {
            this.accNum = accNum;
        }

        public void setInitiateAmount(double initiateAmount) {
            this.initiateAmount = initiateAmount;
        }

        public void setName(String name) {
            this.name = name;
        }

        @Override
        public String toString() {
            return name + "\t" + accNum + "\t" + initiateAmount;
        }
    }

    public static void main(String[] args) {
        List<BankAccount> bankAccounts = new ArrayList<BankAccount>();
        Scanner sc = new Scanner(System.in);
        while(true){
        System.out.println("WELCOME TO OUR BANK!\n\n"
                + "Choose your option:\n"
                + "1. Create new account\n"
                + "2. View all the accounts property\n"
                + "3. Quit\n");

            int option = sc.nextInt();
            sc.nextLine();
            switch(option){
                case 1:
                    BankAccount account = new BankAccount();
                    System.out.println("Enter your full name:");
                    account.setName(sc.nextLine());
                    System.out.println("Choose an account number:");
                    account.setAccNum(sc.nextInt());                    
                    System.out.println("Enter an initiating amount:");
                    account.setInitiateAmount(sc.nextDouble());
                    bankAccounts.add(account);
                    break;
                case 2:
                    System.out.println("Name\tAcc No\tAmount");
                    for (BankAccount bankAccount : bankAccounts) {
                        System.out.println(bankAccount);
                    }
                    System.out.println("\n\n");
                    break;
                case 3:
                    return;
            }
        }
    }
}

If you want to have the BankAccount in seperate file do the following.

file BankAccount.java

public class BankAccount {
...
...
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM