1

我在使用 arraycopy 从我的数组中删除一个项目时遇到问题。我有两种方法 find (定位要删除的项目的索引)和 delete (删除)。它不会删除任何东西。先感谢您。

 public void find(Comparable value2){
    Scanner sc = new Scanner(System.in);
    Comparable value = value2;

    if (empty() == true){
        System.out.println("The array is empty");

    }
    else{
    int bsValue = Arrays.binarySearch(sa,value);
    System.out.println("The index is: " + bsValue);
    delete(bsValue);
    }
    }

 public void delete(int bs){
     int location = bs;   
     Comparable[] tempArray = new Comparable[sa.length -1];
     System.arraycopy(sa, 0, tempArray, 0, location);
     if (sa.length != location){
         System.arraycopy(sa, location +1 , tempArray, location, sa.length - location - 1);
     }      
}
4

2 回答 2

2

您 allocate tempArray,将数据复制到其中,然后放弃引用。结果,原始数组 ( sa) 保持原样。

大概您打算sa指出新数组:

sa = tempArray;
于 2013-04-18T05:16:37.807 回答
0

通过深度复制 sa 创建 tempArray 的新对象,这将为您完成工作

于 2013-04-18T05:23:40.103 回答