Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从数组中删除元素-java_Java_Arrays - Fatal编程技术网

从数组中删除元素-java

从数组中删除元素-java,java,arrays,Java,Arrays,我尝试从java数组中删除一个元素并移动数组,更新总值和计数。 这是我写的代码段,它给了我错误的结果,我如何修复它 public void remove(int index) { if(index > count-1 || index <0) System.out.println("Incorrect index."); else{ if(index ==1){ total -= numbers[index];

我尝试从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--;
        }

    } 
}
我明白了

数组的大小必须大于0。[空名单][12,25,20] 线程“main”java.lang.ArrayIndexOutOfBoundsException中出现异常异常:3 在NumberList.remove(NumberList.java:113) 位于Prelab8.main(Prelab8.java:102)
您将在for循环中获得arrayindexoutofbound。 应该是

   for(int i=index; i < count-1; i++)
for(int i=index;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--;
            }

        } 
    }
}
公共类测试{
静态整数计数;
静态整数合计;
静态int[]数={1,2,3,4};
公共静态void main(字符串[]args)引发IOException{
计数=数字。长度;
用于(int i:数字){
总计=总计+i;
}
移除(3);
系统输出打印项次(总计);
系统输出打印项次(计数);
}
公共静态无效删除(int索引)
{

如果(index>count-1 | | index可能与
if
中的
count==1
重复吗?请解释您预期会发生什么以及实际发生了什么。包括堆栈跟踪中的任何错误。理想情况下,扩展您的代码示例,使其成为演示您的问题的完整工作示例。是的,我将其更新为count,但我仍然我检查了你的代码,但它仍然给出了java.lang.ArrayIndexOutOfBoundsException:1在NumberList.remove(NumberList.java:104)在Prelab8.main(Prelab8.java:102)我没有你的NumberList.java或Prelab8.main类,因此无法对错误进行评论
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--;
            }

        } 
    }
}