Java 为什么我得到了错误的0值索引?

Java 为什么我得到了错误的0值索引?,java,arrays,list,Java,Arrays,List,我试图学习如何将数据动态添加到列表中,但我面临一个问题。 为什么我得到了错误的0值索引。当我尝试添加索引的值位置时 import java.util.*; public class MyList{ String[] mList = null; int pointer; public MyList(){ mList = new String[pointer]; } public void add(String aStringValue){

我试图学习如何将数据动态添加到列表中,但我面临一个问题。 为什么我得到了错误的0值索引。当我尝试添加索引的值位置时

import java.util.*;
public class MyList{
    String[] mList = null;
    int pointer;

    public MyList(){
        mList = new String[pointer];
    }

    public void add(String aStringValue){
        System.out.println("add: "+pointer+ " " +aStringValue+ " "+mList.length);
        if (pointer < mList.length-1) {
            System.out.println(pointer+ " " +aStringValue);
            mList[pointer] = aStringValue;
            pointer++;      
        }else{
            System.out.println("New List:");
            String[] lStringList = new String[mList.length + 20];
            System.arraycopy(mList, 0, lStringList, 0, mList.length);
            mList = lStringList;
            System.out.println("New List: "+mList.length);
        }
    }

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

    public String get(int index){
        return mList[index];
    }
}

public class ListSize{
    public static void main(String[] args){
        MyList lList = new MyList();
        lList.add("Amit");
        lList.add("Deepak");
        lList.add("Vishal");
        lList.add("hello");
        lList.add("abc");
        lList.add("rahul");
        lList.add("ajit");
        lList.add("durgesh");
        lList.add("a");
        lList.add("b");
        lList.add("c");
        lList.add("d");
        lList.add("e");
        System.out.println("MyList is: "+lList.size());
        for (int i = 0; i<lList.size(); i++) {
            System.out.println(lList.get(i));
        }
    }
}
import java.util.*;
公共类MyList{
字符串[]mList=null;
int指针;
公共MyList(){
mList=新字符串[指针];
}
公共void add(字符串aStringValue){
System.out.println(“添加:“+pointer+”“+aStringValue+”“+mList.length”);
如果(指针<列表长度-1){
System.out.println(指针+“”+aStringValue);
mList[指针]=收敛值;
指针++;
}否则{
System.out.println(“新列表:”);
字符串[]lStringList=新字符串[mList.length+20];
System.arraycopy(mList,0,lStringList,0,mList.length);
mList=lStringList;
System.out.println(“新列表:+mList.length”);
}
}
公共整数大小(){
int size=0;

对于(int i=0;i当您创建一个新数组时,您不需要向其中添加任何内容。我建议您始终检查大小是否正确,然后始终添加元素。如果您想清楚地看到这一点,我建议您在调试器中逐步执行代码

public void add(String aStringValue) {
    // ensure capacity.
    if (pointer == mList.length)
        mList = Arrays.copyOf(mList, mList.length + 20);

    mList[pointer++] = aStringValue;
}

add
方法中,如果数组没有空间容纳要添加的字符串,则创建一个新的更大的数组,但不将字符串添加到新数组中

我认为
if
语句中
if
部分的代码应该放在
if
语句之后。

lList.get(I-1)