当前位置: 首页 > 知识库问答 >
问题:

条件,其中所有元素都被移除,显示错误的值

傅乐湛
2023-03-14

MyArrayList.java

public class MyArrayList {

    private int[] array;
    private int current;
    public MyArrayList(int size) {
       array=new int[size];
       current = 0;
    }
 
     public MyArrayList(){
     setArraySize(10);
    }
   
 
 
    public void setArraySize(int size){
        array=new int[size];
        current=0;
    }
 
 
    public void add(int value) {
     array[current] = value;
     current++;
 
    }
 
    public int get(int position){ 
        int value = 0;
        if(position >= 0 && position < current) {
            value = array[position];
          }
          return value;
    }
 
    public void set(int position, int value) {
        if(position > 0 && position <= current) 
            array[position] = value;
 
    }
 
    public int size() {
        return current;
    }
 
 
    public void remove(int position) {
      int index = position;
      if(position > 0 && position <= current) {
      for(int i = index; i < current - 1; i++) {
           array[i] = array[i+1];
      }
       current--;
      }
 
    }
 
    public int[] toArray() {
        int[] newArray = new int[current];
        for(int i = 0; i <= current -1; i++) {
          newArray[i] = array[i];
        }
        return newArray;
    }
 
 
    public void replace(int oldValue, int newValue) {
        for(int i = 0; i < current; i++) {
            if(array[i] == oldValue) {
                 array[i] = newValue;
                 break;
               }
        }
    }
 
 
    public boolean contains(int value) {
        for(int i = 0; i < current; i++) {
            if(array[i]==value){
                return true;
            }
        }
        return false;
    }
 
 
    public boolean isEmpty() {
        if (current == 0)
            {
                return true;
            }
        return false;
    }
 
 
    public void clear() {
        current = 0;
    }
 
}

java

public class Runner {
        
    public static void main(String[] args) {
       
                MyArrayList mylist = new MyArrayList(10);
                mylist.add(10);
                mylist.add(15);
                mylist.add(10);
                mylist.add(35);
                mylist.add(50);
                mylist.add(10);
 
                System.out.println("IsEmpty should be false: " + mylist.isEmpty());
                System.out.println("Size should be 6: " + mylist.size());
                System.out.println("Element at position 3 should be 10: " + mylist.get(3));
 
                // set 3 position to 20
                mylist.set(3, 20);
                System.out.println("Element at position 3 should be 20 now: " + mylist.get(3));
 
                // remove 3rd element which is 20
                mylist.remove(3);
                System.out.println("Element at position 3 should be 35 now: " + mylist.get(3));
                System.out.println("Size should be 5: " + mylist.size());
 
                // try removing last element
                mylist.remove(5);
                System.out.println("Element at position 5 should be 0: " + mylist.get(5));
                System.out.println("Size should be 4: " + mylist.size());
 
                // replace first occurrence of 10 to 9
                mylist.replace(10, 9);
                System.out.println("Element at position 1 should be 9 now: " + mylist.get(1));
 
                System.out.println("contains(45) should be false: " + mylist.contains(45));
                System.out.println("contains(35) should be true: " + mylist.contains(35));
 
                System.out.println("Array should be: 9 15 35 50");
                int[] array = mylist.toArray();
                for(int element: array) {
                        System.out.print(element + " ");
                }
                System.out.println();
 
                mylist.clear();
                System.out.println("IsEmpty should be true: " + mylist.isEmpty());
                System.out.println("Size should be 0: " + mylist.size());
        }
 
}

共有1个答案

郭麒
2023-03-14

这是你更正的代码。和你的比较一下。

java prettyprint-override">public class MyArrayList {
    private static final int  INCREASE = 10;

    private int[] array;
    private int current;

    public MyArrayList(int size) {
        array = new int[size];
        current = 0;
    }

    public MyArrayList() {
        this(INCREASE);
    }

    public void add(int value) {
        if (current == array.length) {
            ensureCapacity();
        }
        array[current++] = value;
    }

    public int get(int position) {
        int value = 0;
        if (position >= 0 && position < current) {
            value = array[position];
        }
        return value;
    }

    public void set(int position, int value) {
        if (position >= 0 && position < current) {
            array[position] = value;
        }
    }

    public int size() {
        return current;
    }

    public void remove(int position) {
        int index = position;
        if (position >= 0 && position < current) {
            for (int i = index; i < current - 1; i++) {
                array[i] = array[i + 1];
            }
            current--;
        }
    }

    public int[] toArray() {
        int[] newArray = new int[current];
        for (int i = 0; i <= current - 1; i++) {
            newArray[i] = array[i];
        }
        return newArray;
    }

    public void replace(int oldValue, int newValue) {
        for (int i = 0; i < current; i++) {
            if (array[i] == oldValue) {
                array[i] = newValue;
                break;
            }
        }
    }

    public boolean contains(int value) {
        for (int i = 0; i < current; i++) {
            if (array[i] == value) {
                return true;
            }
        }
        return false;
    }

    public boolean isEmpty() {
        return current == 0;
    }

    public void clear() {
        current = 0;
    }

    private void ensureCapacity() {
        int[] newArray = new int[array.length + INCREASE];
        System.arraycopy(array, 0, newArray, 0, array.length);
        array = newArray;
    }

    public static void main(String[] args) {
        MyArrayList mylist = new MyArrayList(10);
        mylist.add(10);
        mylist.add(15);
        mylist.add(10);
        mylist.add(35);
        mylist.add(50);
        mylist.add(10);

        System.out.println("IsEmpty should be false: " + mylist.isEmpty());
        System.out.println("Size should be 6: " + mylist.size());
        System.out.println("Element at index 3 should be 35: " + mylist.get(3));

        // set 3 index to 20
        mylist.set(3, 20);
        System.out.println("Element at index 3 should be 20 now: " + mylist.get(3));

        // remove 3rd element which is 20
        mylist.remove(3);
        System.out.println("Element at index 3 should be 50 now: " + mylist.get(3));
        System.out.println("Size should be 5: " + mylist.size());

        // try removing last element
        mylist.remove(4);
        System.out.println("Element at index 4 should be 0: " + mylist.get(4));
        System.out.println("Size should be 4: " + mylist.size());

        // replace first occurrence of 10 to 9
        mylist.replace(10, 9);
        System.out.println("Element at index 0 should be 9 now: " + mylist.get(0));

        System.out.println("contains(45) should be false: " + mylist.contains(45));
        System.out.println("contains(15) should be true: " + mylist.contains(15));

        System.out.println("Array should be: 9 15 10 50");
        int[] array = mylist.toArray();
        for (int element : array) {
            System.out.print(element + " ");
        }
        System.out.println();

        mylist.clear();
        System.out.println("IsEmpty should be true: " + mylist.isEmpty());
        System.out.println("Size should be 0: " + mylist.size());
    }
}

下面是运行上述代码时的输出。也和你的比较一下。

IsEmpty should be false: false
Size should be 6: 6
Element at index 3 should be 35: 35
Element at index 3 should be 20 now: 20
Element at index 3 should be 50 now: 50
Size should be 5: 5
Element at index 4 should be 0: 0
Size should be 4: 4
Element at index 0 should be 9 now: 9
contains(45) should be false: false
contains(15) should be true: true
Array should be: 9 15 10 50
9 15 10 50 
IsEmpty should be true: true
Size should be 0: 0

在方法main中(在上面的代码中),创建了类MyArrayList的一个实例,并添加了以下六个元素。

10
15
10
35
50
10
    null
    null
10
15
10
20
50
10
    null
10
15
10
50
10

现在列表有五个元素,因此大小现在是5。第一个元素的索引仍然是0(零)。最后一个元素的索引是4,即比大小少一个。列表中索引3处的元素现在是50。

  • 删除最后一个元素意味着删除索引4处的元素(因为列表的大小是5)。现在列表的大小是4(因为我们删除了最后一个元素),最后一个元素的索引现在是3。因此,根据说明,调用方法get(4)应该返回0(零),因为4大于最后一个元素的索引。换句话说,在大小为4的列表中没有索引4。
  • 调用replace(10,9)意味着列表中的第一个元素,即索引0(零)的元素,现在是9。因此,该列表现在包含以下
9
15
10
50

最后,我添加了方法ensureCapacity。在java中,数组的大小是固定的。说明中没有说不能添加超过数组大小的元素。因此,如果默认大小为10(ten),并且要添加11个元素,则需要创建一个更大的数组。因此,方法EnsureCapacity创建一个新的、更大的数组,并将类成员array中的值复制到新数组中。然后为类成员array分配newarray的值。

 类似资料:
  • 显示所有指定的元素。 使用展开运算符 (...) 和 Array.forEach() 来清除每个指定元素的 display 属性。 const show = (...el) => [...el].forEach(e => (e.style.display = '')); show(...document.querySelectorAll('img')); // Shows all <img> e

  • 我有一些代码使用聚合物属性e <代码> polymer的工作方式是,我不能简单地说<code>force-shorrow=“false”,如果我想禁用该属性,必须将其完全删除。在Angular2中是否有方法有条件地删除整个属性?我似乎找不到关于这个话题的任何信息。我可以使用并重复整个元素,包括属性和不包括属性,但如果可能的话,我宁愿不这样做。谢谢 编辑 - 为什么将此问题标记为重复并关闭?我在有问

  • 我在下面代码中复制了一个奇怪问题。我已经在模拟器和设备上进行了测试&结果是一样的。我在一个容器中有26个按钮(它的布局是flowlayout),它本身在BorderLayout(窗体的布局)的南部。但只看到按钮的一部分。我在下面的代码中做错了什么?重新验证也不做任何事情。 这里只看到7个BTN。skipButton也不在那里。为什么其他按钮不显示?

  • 问题内容: 我有两个表,用于存储该员工的所有个人记录,并存储每个月支付给特定员工的电话费。现在我有一个名为的函数,类似于以下内容: 此功能基本上可以找到在给定期间内支付账单的所有员工。但是我遇到一个错误 型号:: 注意:如果我跳过和条件,我将得到array的结果! 问题答案: 详细信息/注释: 1)看起来您正在使用。不要那样做改用Containable 2)您不能根据条件限制父模型包含的数据/包含

  • 本文向大家介绍aurelia 有条件地显示和隐藏HTML元素,包括了aurelia 有条件地显示和隐藏HTML元素的使用技巧和注意事项,需要的朋友参考一下 示例 使用时show.bind,元素保留在页面中,并且通过使用场景display:none或display:block在场景后隐藏或可见。            

  • 我正在做一个网站,有固定的辅助导航到右侧的视口。使用waypoint,当特定的id出现在视口底部时,我可以向导航锚点元素添加一个类。但是,我不知道如何做的是,当元素中的元素不再在视口中时,从该元素中移除该类。现在,我的导航将从活动类获得适当的样式,但当我向下滚动页面时,每个导航元素将保持活动类的样式。当元素不再显示在屏幕上时,我需要移除活动类。谢谢你的帮助。 jQuery: 实时html页面: h