如何从数组中删除元素

时间:2014-12-10 20:16:09

标签: java arrays

在Java中,老师教我们如何在不使用数组工具等的情况下从数组中删除元素。所以我尝试了他给我们的方法。它完全按照我的意愿更新索引值。更改索引值后,我希望它删除最后一个索引“sizeOfArray-1” 但我做不到!有什么帮助吗?

这里是代码:

import java.util.Scanner;

public class Arrays {

static int x[] = { 1, 2, 3, 4, 5, 6, 7 };

static Scanner input = new Scanner(System.in);

public int search(int target) {
    for (int index = 0; index < x.length; index++) {
        if (x[index] == target)
            return index;
    }
    return -1;
}

public void deleteIndex(int target) {
    int deleted = search(target);
    if (deleted == -1)
        System.out.println("Entry Not Found!");
    else {
        x[target] = x[7-1];
    }
}

public static void main(String[] args) {
    Arrays f = new Arrays();
    int counteri = 0;
    int counterj = 0;

    for (int j = 0; j < x.length; j++) {
        System.out.print(counterj + "=>" + x[j] + "  \n");
        counterj++;
    }

    f.deleteIndex(input.nextInt());

    for (int i = 0; i < x.length; i++) {
        System.out.print(counteri + "=>" + x[i] + "   \n");
        counteri++;
    }
}
}

4 个答案:

答案 0 :(得分:1)

您实际上无法从Java中删除数组中的项目。下面是一些伪代码,显示了您可以做的事情:

  • 创建一个原始数组大小为-1的新数组
  • 开始循环,跟踪当前索引
  • 将项目从原始数组复制到与当前索引对应的新数组(如果应该保留)(否则跳过应该删除的项目)
  • 返回新数组

答案 1 :(得分:1)

首先,您必须更改此行

x[target] = x[7-1];

到此:

x[deleted] = x[7-1];

因为您在搜索功能中找到了一个元素,并将其索引返回到deleted,因此您必须在x[deleted]而不是x[target]

中执行操作

您的代码只是将元素的实际值替换为此处的最后一个元素的数量:

else {
    x[target] = x[7-1];
}

所以当你想(因为你调用它)删除最后一个元素时,它只是用它自己替换最后一个元素,所以它没有做任何事情。

您只需简单地指定数组中不存在的另一个值,例如-1,您就可以看到您的函数正常工作。

这样的事情:

else {
    x[deleted] = -1;
}

但实际上并不是删除,你不能删除java中的数组项。

答案 2 :(得分:0)

Java中的数组已经修复了预定义的长度,一旦初始化数组,就无法从中删除元素。您可以做的最好的事情是创建另一个包含原始数组的所有元素的数组,而不是那个特定的元素。

答案 3 :(得分:0)

//delete the element the perticular element in a position//
import java.util.*;
class main13
{
    public static void main(String args[])
    {
        Scanner sc=new Scanner(System.in);
        System.out.println("Enter the range");
        int no=sc.nextInt();
        System.out.println("Enter the array elements");
        int a[]=new int[no];
        int i,j;

        for(i=0;i<no;i++)
        {
            a[i]=sc.nextInt();
        }
        System.out.println("Enter the element you want to delete");
        int d=sc.nextInt();
        for(i=0;i<no;i++)
        {
            if(d==a[i])
            {
                for(j=i;j<no-1;j++)
                {
                    a[j]=a[j+1];
                }

                break;
            }
            else
            {
                System.out.println("Element not found");
                System.exit(0);
            }
        }
        System.out.println("After deletion:");
        for(i=0;i<no-1;i++)
        {
            System.out.println(a[i]);
        }
    }
}