-7

编写一个名为 get 的方法,该方法将从给定索引返回一个元素。如果索引超出范围,则返回 -1。

编写一个名为 remove 的方法,该方法将从给定索引中删除一个元素。如果索引超出范围,则返回 -1。在删除期间应相应地移动数据。

//This is the get method 

public int get(int index){

    if(index < 0 || index >= size) {
       return -1;

 }else {
        return data[index];
    }

}

//This is the remove method

public int remove(int index){

    if(index < 0 || index >= size){
        return -1;

    }else {

        for(int i = 0; i < size-1; i++) {
            index[i] = index[i+1];
        }
    }

}

这是我得到的。不知道如何继续使用代码。如果有人可以指导我完成,我将不胜感激。谢谢!

4

3 回答 3

1

到目前为止,您的想法是正确的。我将根据您的语法假设您使用的是数组。您的get()方法看起来不错,但是您的方法中缺少一些代码remove()

public int remove(int index){
  //check for out-of-bounds
  if(index < 0 || index >= size) //assumes size is set to the size of the array
  {
    return -1; }
  else
    {
     for(int i = index; i < size-1; i++){
         data[i] = data[i+1]; }
         data[size-1] = 0;  //assuming the array contains numbers, if not replace '0' with null
    }
}
于 2016-02-16T22:49:49.810 回答
0

您需要替换以下内容:

    for(int i = 0; i < size-1; i++) {
        index[i] = index[i+1];
    }

和:

    for(int i = index; i < size-1; i++) {
        data[i] = data[i+1];
    }
  • 开始循环index
  • index[i]不会编译。应该data[i]是吧。

注意:
这不会删除最后一个元素。您需要专门检查它。

于 2016-02-16T22:41:01.687 回答
-2
public class MyList<T> {

T[] items = (T[])new Object[10];

public int size() {
            
            int counter=0;
            for (int i = 0; i < items.length; i ++) {
                   
                if (items[i] != null) {
                     counter ++;
                }
                   
            }
            return counter;
          }

    public void remove(int t) {
            for (int i = t; i < items.length-1; i++) {
                
                items[i]=items[i+1];        
            }
            
            items[items.length-1]=null;
            
            items= Arrays.copyOf(items,size());     
                        
        }
}
于 2021-02-05T17:37:12.203 回答