Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Java error messages java.lang.ArrayIndexOutOfBoundsException: 1 Can someone plea

ID: 3882242 • Letter: J

Question

Java error messages

java.lang.ArrayIndexOutOfBoundsException: 1

Can someone please tell me what's wrong and how to fix this?

enum AccountEnum{Savings,Checking,Business,CreditCard}
public class Account {

// data fields

private int ACCNumber;

private double ACCBalance;

private String CustomerID;

private String DebitNo;

private String BName;

private String BID;

private String CreditNo;

private double MaxCredit;
private AccountEnum Type;

//Savings Account

public Account(int ACCNumber, String CustomerID, double ACCBalance) {

this.ACCNumber = ACCNumber;

this.CustomerID = CustomerID;

this.ACCBalance = ACCBalance;
Type = AccountEnum.Savings;} //Checking Account

public Account(int ACCNumber, String CustomerID, double ACCBalance, String DebitNo)

{

this.ACCNumber = ACCNumber;

this.CustomerID = CustomerID;

this.ACCBalance = ACCBalance;

this.DebitNo = DebitNo;

Type = AccountEnum.Checking;
}

//Business Account

public Account (int ACCNumber, String CustomerID, double ACCBalance, String BName, String BID)

{

this.ACCNumber = ACCNumber;

this.CustomerID = CustomerID;

this.ACCBalance = ACCBalance;

this.BName = BName;

this.BID = BID;

Type = AccountEnum.Business;
}

//Credit Card Account

public Account(String CustomerID, String CreditNo, double ACCBalance, double MaxCredit)

{

this.CustomerID = CustomerID;

this.CreditNo = CreditNo;

this.ACCBalance = ACCBalance;

this.MaxCredit = MaxCredit;

Type = AccountEnum.CreditCard;
}

public String getCreditNo() {return CreditNo;}

public void setCreditNo(String CreditNo) {this.CreditNo = CreditNo;}

public double getMaxCredit() {return MaxCredit;}

public void setMaxCredit(double MaxCredit) {this.MaxCredit = MaxCredit;}

public String getDebitNo() {return DebitNo;}

public void setDebitNo(String DebitNo) {this.DebitNo = DebitNo;}

public String getBID() {return BID;}

public void setBID(String BID) {this.BID = BID;}

public String getBName() {return BName;}

public void setBName(String BName) {this.BName = BName;}

public String getCustomerID() {return CustomerID;}

public void setCustomerID(String CustomerID) {this.CustomerID = CustomerID;}

public int getACCNumber() {return ACCNumber;}

public void setACCNumber(int ACCNumber) {this.ACCNumber = ACCNumber;}

public double getACCBalance() {return ACCBalance;}

public void setACCBalance(double ACCBalance) {this.ACCBalance = ACCBalance;}
@Override
public String toString() {

return "Account [ACCNumber=" + ACCNumber + ", ACCBalance=" + ACCBalance + ", CustomerID=" + CustomerID

+ ", DebitNo=" + DebitNo + ", BName=" + BName + ", BID=" + BID + ", CreditNo=" + CreditNo

+ ", MaxCredit=" + MaxCredit + "]";

}

}

public class Customer{

private String CustomerID;

private String LName;

private String FName;

private String Address;

private String City;

public Customer(String CustomerID, String LName, String FName, String Address, String City)

{

this.CustomerID =CustomerID;

this.LName = LName;

this.FName = FName;

this.Address = Address;

this.City = City;

}

public String getCustomerID() {return CustomerID;}

public void setCustomerID(String CustomerID) {this.CustomerID = CustomerID;}

public String getLName() { return LName;}

public void setLName(String LName) {this.LName = LName;}

public String getFName() {return FName;}

public void setFName(String FName) {this.FName = FName;}

public String getAddress() {return Address;}

public void setAddress(String Address) {this.Address = Address;}

public String getCity() {return City;}

public void setCity(String City) {this.City = City;}

@Override

public String toString() {

return "CustomerID+LName +FName + Address +City";

}

}

import java.io.File;

import java.util.ArrayList;

import java.util.Scanner;

public class Main {

ArrayList customers;

ArrayList accounts;

public Main() {

customers = new ArrayList<>();

accounts = new ArrayList<>();

}

public void getDataFromFile(String dataset){

Scanner sc;

try{

//file

File file = new File(dataset);

//scanner

sc = new Scanner(file);

//read line

while ( sc.hasNextLine()) {

//split line

String[] tokens = sc.nextLine().split("\s{2}");

Customer customer = new Customer(tokens[0], tokens[1], tokens[2], tokens[3], tokens[4]);

customers.add(customer);

if (tokens[5].equalsIgnoreCase("Checking")){

Account account= new Account(Integer.parseInt(tokens[6]), tokens[0], Double.parseDouble(tokens[7]), tokens[8]);

accounts.add(account);

}

if (tokens[5].equalsIgnoreCase("Savings")){

Account account= new Account(Integer.parseInt(tokens[6]), tokens[0],Double.parseDouble( tokens[7]));

accounts.add(account);

}

if (tokens[5].equalsIgnoreCase("Business")){

Account account= new Account(Integer.parseInt(tokens[6]), tokens[0], Double.parseDouble(tokens[7]), tokens[8], tokens[9]);

accounts.add(account);

}

if (tokens[5].equalsIgnoreCase("CreditCard")){

Account account= new Account(tokens[0], tokens[6], Double.parseDouble(tokens[7]), Double.parseDouble(tokens[8]));

accounts.add(account);

}

}

}

catch(Exception e){

System.err.println(e);

}

}

//prints both arrays using for loop

public void displayAccounts(){

for (Customer customer:customers){

System.out.println(customer.toString());

for (Account account:accounts){

if (account.getCustomerID() == customer.getCustomerID())

System.out.println(account.toString());

}

}

}

public static void main(String[] args) {

Main main = new Main();

//you can change file name here

main.getDataFromFile("Dataset.txt");

main.displayAccounts();

}

}

C8392380567 Sage Amy PingTingRoad Edmonton Checking 873387 5000 0000-6666-6666-6666

C8954385123 Lee Bob TexacoRoad Calgary Savings 827366 9480

C2389490434 Neil Carson DeerfootTrail Otawa Business 763655 65000 EmporiaLLC 87-927736

C9384899234 Ko David UnversityDrive Stillwater CreditCard 7667-9899-8776-1234 430 4000

C0930238083 Warren John OgdenRoad Tyler Checking 726615 1230 0000-2222-2222-2222

C8392380567 C8954385123 C2389490434Ne Carson Deerfoot Trai Otawa C9384899234 CO930238083 Checking Savings Bus iness CreditCard Checking 873387 5000 0000-6666-6666-6666 827366 9480 763655 65000 EmporiaLLC 7667-9899-8776-1234 4304000 726615 230 0000-2222-2222-2222 Sage Amy Bob Pingl ingHoad TexacoRoad EdmontoN Calgary 87-927736 David UnversityDrive Stillwater Warren JohnOgdenRoad Tyler

Explanation / Answer

Regular expression in split function is wrong.

incorrect expression: String[] tokens = sc.nextLine().split("\s{2}");

correct expression: String[] tokens = sc.nextLine().split("\s+");

Explaination:

Because of this wrong expression, the line did not get splitted properly and it was taking one entire line as 1st element of array tokens. (i.e. tokens[0] = C8392380567 Sage Amy PingTingRoad Edmonton Checking 873387 5000 0000-6666-6666-6666). And because of that arrays size is one. And it is giving "java.lang.ArrayIndexOutOfBoundsException: 1"

After using correct expression. it will split the line properly and token array will get proper values.

(i.e. tokens[0] = C8392380567,tokens[1] = Sage,tokens[2] = Amy,tokens[3] = PingTingRoad,tokens[4] = Edmonton,tokens[5] = Checking,tokens[6] = 873387,tokens[7] = 5000,tokens[8] = 0000-6666-6666-6666)

After using correct expression, output will be:

CustomerID+LName +FName + Address +City
Account [ACCNumber=763655, ACCBalance=65000.0, CustomerID=C2389490434, DebitNo=null, BName=EmporiaLLC, BID=87-927736, CreditNo=null, MaxCredit=0.0]
CustomerID+LName +FName + Address +City
Account [ACCNumber=0, ACCBalance=430.0, CustomerID=C9384899234, DebitNo=null, BName=null, BID=null, CreditNo=7667-9899-8776-1234, MaxCredit=4000.0]
CustomerID+LName +FName + Address +City
Account [ACCNumber=726615, ACCBalance=1230.0, CustomerID=C0930238083, DebitNo=0000-2222-2222-2222, BName=null, BID=null, CreditNo=null, MaxCredit=0.0]

SUGGESTION:

use proper toString() in Customer.java file

@Override

public String toString() {

return "Customer [CustomerID=" + CustomerID + ", LName=" + LName

+ ", FName=" + FName + ", Address=" + Address + ", City="

+ City + "]";

}

After using proper toString() method, output will be:

Customer [CustomerID=C8392380567, LName=Sage, FName=Amy, Address=PingTingRoad, City=Edmonton]
Account [ACCNumber=873387, ACCBalance=5000.0, CustomerID=C8392380567, DebitNo=0000-6666-6666-6666, BName=null, BID=null, CreditNo=null, MaxCredit=0.0]
Customer [CustomerID=C8954385123, LName=Lee, FName=Bob, Address=TexacoRoad, City=Calgary]
Account [ACCNumber=827366, ACCBalance=9480.0, CustomerID=C8954385123, DebitNo=null, BName=null, BID=null, CreditNo=null, MaxCredit=0.0]
Customer [CustomerID=C2389490434, LName=Neil, FName=Carson, Address=DeerfootTrail, City=Otawa]
Account [ACCNumber=763655, ACCBalance=65000.0, CustomerID=C2389490434, DebitNo=null, BName=EmporiaLLC, BID=87-927736, CreditNo=null, MaxCredit=0.0]
Customer [CustomerID=C9384899234, LName=Ko, FName=David, Address=UnversityDrive, City=Stillwater]
Account [ACCNumber=0, ACCBalance=430.0, CustomerID=C9384899234, DebitNo=null, BName=null, BID=null, CreditNo=7667-9899-8776-1234, MaxCredit=4000.0]
Customer [CustomerID=C0930238083, LName=Warren, FName=John, Address=OgdenRoad, City=Tyler]
Account [ACCNumber=726615, ACCBalance=1230.0, CustomerID=C0930238083, DebitNo=0000-2222-2222-2222, BName=null, BID=null, CreditNo=null, MaxCredit=0.0]

If you have any further query regarding this problem then please feel free to ask in comment.

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote