Java 为什么我得到了错误的0值索引?
我试图学习如何将数据动态添加到列表中,但我面临一个问题。 为什么我得到了错误的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){
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)