Can you help me rearrange my code to make it look cleaner but still give the same output? Also kindly add an in-line comment on what changes and rearrangement you've done so I can understand what's going on.
import java.util.ArrayList;
import java.util.Scanner;
public class Bank {
/** * Add and read bank information to the user. * @param arg A string, double and int array containing * the command line arguments. * @exception Any exception * @return an arraylsit of bank customers */ // method to display the menu static void menu() { System.out.println(" 1. Add a bank customer"); System.out.println("2. Remove a bank customer"); System.out.println("3. Print all bank customers"); System.out.println("4. Quit"); }
// method to add a customer in sorted order of account number into an array
// list. returns true if addition is successful, else false
static boolean addCustomer(ArrayList customers, BankCustomer newCustomer) { // looping and finding the proper position to add for (int i = 0; i < customers.size(); i++) { // checking if new customer can be added to index i if (newCustomer.getAcctNumber() < customers.get(i).getAcctNumber()) { // adding to index i customers.add(i, newCustomer); return true; // success } else if (newCustomer.getAcctNumber() == customers.get(i) .getAcctNumber()) { // duplicate found, returning false return false; } } // adding to the end, if still not added customers.add(newCustomer); return true; // success }
// method to remove a customer by account number, if exists
static boolean removeCustomer(ArrayList customers, int accountNum) { for (int i = 0; i < customers.size(); i++) { if (customers.get(i).getAcctNumber() == accountNum) { // found, removing current customer customers.remove(i); return true; // found and removed } } return false; // not found }
// method to print customers
static void printCustomers(ArrayList customers) { // displaying heading System.out.printf("%-15s %-15s %-15s ", "Customer Name", "Account Number", "Account Balance"); // looping and printing each customer's name, acc num and balance for (BankCustomer c : customers) { System.out.printf("%-15s %-15d $%-14.2f ", c.getName(), c.getAcctNumber(), c.getBalance()); } System.out.println("----------------------------------------------- "); }
// main method
public static void main(String[] args) { // creating an array list of BankCustomer ArrayList accounts = new ArrayList(); // scanner to read user input Scanner scanner = new Scanner(System.in); int ch = 0; // looping until ch is 4 do { // displaying menu menu(); // inside try with multiple catches block, getting and processing // user input try { System.out.print("Enter your choice: "); //reading choice ch = Integer.parseInt(scanner.nextLine()); System.out.println(); if (ch == 1) { //reading details for bank customer System.out.print("Enter name: "); String name = scanner.nextLine(); System.out.print("Enter account number: "); int accNum = Integer.parseInt(scanner.nextLine()); System.out.print("Enter balance: "); double balance = Double.parseDouble(scanner.nextLine()); //creating a customer, will throw BCException if any detail is invalid BankCustomer cust = new BankCustomer(accNum, balance, name); //if no exception occurred, adding to the list and displaying the result if (addCustomer(accounts, cust)) { System.out.println("Success!"); } else { System.out .println("Customer with same account number already exists!"); } } else if (ch == 2) { //fetching an account number, removing customer System.out.print("Enter account number: "); int accNum = Integer.parseInt(scanner.nextLine()); if (removeCustomer(accounts, accNum)) { System.out.println("Success!"); } else { System.out .println("Customer with given account number does not exist!"); } } else if (ch == 3) { //printing customers printCustomers(accounts); } } catch (BCException e) { //BCException is occurred System.out.println(e.getMessage()); } catch (Exception e) { //exception due to non numeric input System.out.println("Invalid input!"); } } while (ch != 4); }
}