Im doing an assignment from our Array Operations topic. All operations are working but the delete wont work. Below is the error I got when I tried to delete an element to an array:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 5 out of bounds for length 5
at com.company.Array.removeAt(Array.java:34)
at com.company.Main.main(Main.java:67)
Here is my main java:
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("====================================");
System.out.print("Enter the Size of the Array: ");
int arrayLength = input.nextInt();
Array numbers= new Array(arrayLength);
int c=1;
System.out.println("\nInput the numbers consecutively: ");
for (int i = 0; i < arrayLength; i++) {
int arrayData = input.nextInt();
numbers.insert(arrayData);
}
System.out.println("\nArray Current Data:");
numbers.print();
System.out.println("====================================");
while(c!=4) {
System.out.println("Pick an Option: ");
System.out.println("Select 1 to Add");
System.out.println("Select 2 to Search");
System.out.println("Select 3 to Delete");
System.out.println("Select 4 to Exit");
System.out.print("= ");
int option = input.nextInt();
//Inserting data to array
if (option == 1) {
System.out.print("\nEnter Number of Data to Add: ");
int arrayLength2 = input.nextInt();
System.out.println("\nInput the numbers consecutively: ");
for (int i = 0; i < arrayLength2; i++) {
int arrayData = input.nextInt();
numbers.insert(arrayData);
}
System.out.println("\nArray Current Data:");
numbers.print();
System.out.println("====================================");
}
//Searching a number to Array
else if (option == 2) {
System.out.print("\nInput the number to search: ");
int arraySearch = input.nextInt();
System.out.println("\nArray Current Data:");
numbers.print();
System.out.println("\nIndex Number of "+ arraySearch + " is " + numbers.search(arraySearch));
System.out.println("====================================");
}
//Deleting a number to Array
else if (option == 3) {
System.out.print("\nInput the index number to delete: ");
int arrayDelete = input.nextInt();
numbers.removeAt(arrayDelete);
System.out.println("\nArray Current Data:");
numbers.print();
System.out.println("====================================");
}
else {
System.out.println("\nThank you for using!");
break;
}
}
}
}
Here is my Array java:
public class Array {
private int[] items;
private int count;
public Array(int length) {
items = new int[length];
}
public void print() {
for (int i = 0; i < count; i++)
System.out.println(items[i]);
}
public void insert(int item){
if(items.length==count) {
int[] newItems = new int[count * 2];
for(int i=0; i<count; i++)
newItems[i] = items[i];
items=newItems;
}
items[count]=item;
count++;
}
public void removeAt(int index) {
if(index < 0 || index >= count){
throw new IllegalArgumentException();}
for(int i = index; i < count; i++)
items[i] = items[i + 1];
count--;
}
public int search(int item){
for(int i=0; i<count ; i++)
if(items[i] == item)
return i;
return -1;
}
}
The error is pertaining to line 34 in my Array java and line 67 in my Main Java. I don't notice anything wrong. Help me to solve this! I'm also a beginner from java.