java - 数组删除或删除操作不起作用
问题描述
我正在执行我们的阵列操作主题的任务。所有操作都正常,但删除不起作用。以下是我尝试将元素删除到数组时遇到的错误:
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的初学者。
解决方案
推荐阅读
- cordova - Framework7 v5 包含自定义 js 文件的最佳方式
- java - 什么 RegEx 分隔多项式的项
- python - 如何为 Combobox 值的每次更改唯一地将函数绑定到 Ttk Combobox
- python - 将不同行数的列附加到 DataFrame
- tensorflow - 如何训练一个简单的神经网络来实现中值滤波?
- reactjs - 无法在 useEffect 反应钩子中调度动作
- javascript - 无法从简单的提取中创建 blob
- encryption - PEM_read_X509 函数
- java - NavigationComponents - NavigationDrawer 在 Java 中不起作用 [错误]
- shell - 如何在 python 脚本中运行 postgres 命令并将其写入文件?