我尝试从java数组中删除一个元素并移动数组,更新总值和计数。 这是我写的代码段,它给了我错误的结果,我该如何解决?
public void remove(int index)
{
if(index > count-1 || index <0)
System.out.println("Incorrect index.");
else{
if(index ==1){
total -= numbers[index];
numbers = new int [0];
count--;
}else{
total -= numbers[index];
for(int i=index; i < count; i++)
numbers[i] = numbers[i+1];
count--;
}
}
}
我用这个测试代码;
NumberList n10 = new NumberList(-5);
n10.add(45);
n10.remove(0);
System.out.println(n10);
n10.add(12);
n10.add(25);
n10.add(20);
System.out.println(n10);
n10.remove(1);
n10.remove(1);
n10.remove(0);
System.out.println(n10);
我得到了
Size of the array must be greater than 0. [Empty List] [12, 25, 20]
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
at NumberList.remove(NumberList.java:113)
at Prelab8.main(Prelab8.java:102)
答案 0 :(得分:1)
您将在for循环中获得arrayindexoutofbound。 它应该是
for(int i=index; i < count-1; i++)
最终代码示例:
public class Test {
static int count;
static int total;
static int [] numbers = {1,2,3,4};
public static void main(String[] args) throws IOException {
count = numbers.length;
for (int i : numbers) {
total = total+i;
}
remove(3);
System.out.println(total);
System.out.println(count);
}
public static void remove(int index)
{
if(index > count-1 || index <0)
System.out.println("Incorrect index.");
else{
if(index ==1){
total -= numbers[index];
numbers = new int [0];
count--;
}else{
total -= numbers[index];
for(int i=index; i < count-1; i++)
numbers[i] = numbers[i+1];
count--;
}
}
}
}