首页 > 解决方案 > 数组删除或删除操作不起作用

问题描述

我正在执行我们的阵列操作主题的任务。所有操作都正常,但删除不起作用。以下是我尝试将元素删除到数组时遇到的错误:

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)

这是我的主要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;
        }
    }
}
 }

这是我的数组 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;
}

}

该错误与我的 Array java 中的第 34 行和我的 Main Java 中的第 67 行有关。我没发现有什么不对。帮我解决这个问题!我也是java的初学者。

标签: javaarraysintellij-ideaideindexoutofboundsexception

解决方案


推荐阅读