I'm currently messing around with BlueJ and trying to get objects to interact with each other and stuff. I have created an account and accountlist class. The accountlist allows you to add account objects which it then puts into an arraylist.
Removing these accounts from the array by index was easy enough with a for loop to get the position of each account, but now it should remove the Account with the account number specified as a parameter and I can't work out how to get the accountnumber from the array to compare it with the users input.
AccountList Class
/**
* Creates an AccountList that will store customers accounts
*
* @author Ryan Conway
* @version 12/11/2014
*/
import java.util.*;
public class AccountList
{
private ArrayList < Account > accounts;
/**
* Create an AccountList that will contain accounts.
*/
public AccountList()
{
accounts = new ArrayList < Account >();
}
/**
* Add a account to this AccountList.
*/
public void addAccount(Account newAccount)
{
accounts.add(newAccount);
}
/**
* Return the number of accounts stored in this AccountList.
*/
public int getNumberOfAccounts()
{
return accounts.size();
}
/**
* prints out the number of accounts to the terminal.
* for each loop used to get each account.
*/
public void getAllAccounts()
{
for(Account account : accounts)
{
account.printAccountDetails();
}
System.out.println("Number of accounts: " + getNumberOfAccounts());
}
/**
* Print out details of a account
* @param accountEntry The entry in the list
*/
public void getAccount(int accountEntry)
{
if(accountEntry < 0)
{
System.out.println("Negative entry :" + accountEntry);
}
else if(accountEntry < getNumberOfAccounts())
{
Account account = accounts.get(accountEntry);
account.printAccountDetails();
}
else
{
System.out.println("No such entry :" + accountEntry);
}
}
/**
* removes a account from the list
* @param accountEntry The entry in the list
*/
public void removeAccount(int accountEntry)
{
if(accountEntry < 0)
{
System.out.println("Negative entry :" + accountEntry);
}
else if(accountEntry < getNumberOfAccounts())
{
accounts.remove(accountEntry);
}
else
{
System.out.println("No such entry :" + accountEntry);
}
}
public boolean removeAccount(String accountNumber)
{
int index = 0;
for(Account account : accounts)
{
if (accounts.equals(accountNumber))
System.out.println("Found It!");
index++;
}
return false;
}
public void printCollection()
{
System.out.println(accounts);
}
}
Account Class
/**
* Write a description of class Account here.
*
* @author (your name)
* @version (a version number or a date)
*/
public class Account
{
private String firstName;
private String lastName;
private String accountNumber;
private int pointsHeld;
private Address address;
/**
* Constructor for objects of class Account.
* The number of pointsHeld should be set to zero.
*
* @param firstName The Account Holder's first name
* @param lastName The Account Holder's last name
* @param accNumber The Account Holder's account number
* @param street the account holder's street
* @param town the account holder's town
* @param postcode the account holder's postcode
*/
public Account(String fName, String lName, String accNumber,
String street, String town, String postcode)
{
firstName = fName;
lastName = lName;
accountNumber = accNumber;
pointsHeld = 0;
address = new Address(street, town, postcode);
}
/**
* Constructor for objects of class Account.
* The number of pointsHeld should should be set to
* the supplied value.
*
* @param fName The Account Holder's first name
* @param lName The Account Holder's last name
* @param acctNumber The account number
* @param thePoints the pointsHeld awarded when account is initialised
* @param street the account holder's street
* @param town the account holder's town
* @param postcode the account holder's postcode
*/
public Account(String fName, String lName, String acctNumber, int points,
String street, String town, String postcode)
{
firstName = fName;
lastName = lName;
accountNumber = acctNumber;
pointsHeld = points;
address = new Address(street, town, postcode);
}
// accessors
/**
* Get the Account Holder's first name
*
* @return the Account Holder's first name
*/
public String getFirstName()
{
return firstName;
}
/**
* Get the Account Holder's last name
*
* @return the Account Holder's last name
*/
public String getLastName()
{
return lastName;
}
/**
* Get the Account Holder's account Number
*
* @return the Account Holder's account number
*/
public String getAccountNumber()
{
return accountNumber;
}
/**
* Get the number of points held
*
* @return the number of points held
*/
public int getNoOfPoints()
{
return pointsHeld;
}
/**
* Print out the Account Holder's details to the console window
*
*/
public void printAccountDetails()
{
System.out.println( firstName + " " + lastName
+ "\n" + address.getFullAddress()
+ "\nAccount Number: " + accountNumber
+ "\nNumber of points: " + pointsHeld);
}
/**
* Return the account holder's address
*
* @return the account holder's address
*/
public String getAddress()
{
return address.getFullAddress();
}
// mutators
/**
* Change the first name
*
* @param fName the new first name
*
*/
public void setFirstName(String fName)
{
firstName = fName;
}
/**
* Change the last name
*
* @param lName the new last name
*
*/
public void setLastName(String lName)
{
lastName = lName;
}
/**
* Increase the number of points held by a given number
* and output a esage to the console window giving
* the revised number of points held.
*
* @param number of points to add to total
*/
public void addPoints(int points)
{
pointsHeld = pointsHeld + points;
System.out.println("Points now held: " + pointsHeld);
}
/**
* Remove pointsHeld by a given number and output a
* message to the console window giving the revised number
* of points held as long as the number of points would
* not fall below zero
* - otherwise output message to console window instead.
*
* @param number of pointsHeld to remove total.
*
*/
public void removePoints (int points)
{
if ((pointsHeld - points) >=0)
{
pointsHeld = pointsHeld - points;
System.out.println("Points now held: " + pointsHeld);
}
else
{
System.out.println("Transaction refused: "
+ "Insufficient points available.");
}
}
/**
* Change the account holder's address
*
* @param street the street
* @param town the town
* @postcode the postcode
*/
public void setAddress(String street, String town, String postcode)
{
address.setFullAddress(street, town, postcode);
}
/**
* Print the account holder's address
*/
public void printAddress()
{
address.printAddress();
}
} // end class
https://i.stack.imgur.com/FpsxJ.jpg
thanks.
Try this:
Removing an item from a list while you are looping through it is not a safe operation, but the
Iterator
class makes this possible. More information: Iterating through a Collection, avoiding ConcurrentModificationException when removing in loop