我写了这段代码。我的目标是在char中写入字符串。但我得到ArrayIndexOfBoundsException错误。
public class Charwork {
char[] letter;
int keepInt;
public Charwork()
{
letter = new char[keepInt];
}
public void copy(String nameToCoppy)
{
this.keepInt = nameToCoppy.length();
System.out.println(this.keepInt);
for(int x = 0; x < this.keepInt;x++)
{
letter[x] = nameToCoppy.charAt(x);
System.out.println(letter[x]);
}
}
}
您的问题是您的数组是使用null或0的int实例化的。在获取字符串长度后,将构造函数中的一行移动到复制函数应该可以解决问题。
public Charwork()
{
}
public void copy(String nameToCoppy)
{
this.keepInt = nameToCoppy.length();
letter = new char[keepInt];
System.out.println(this.keepInt);
for(int x = 0; x < this.keepInt;x++)
{
letter[x] = nameToCoppy.charAt(x);
System.out.println(letter[x]);
}
}
你创建一个对象Charwork
,同时实例化长度为char[] letter
的变量keepInt
- 但keepInt
目前为零,beacuse int是原始的,并且默认为0值。
然后,在copy
方法中你改变了keepInt
的值,但那是无关紧要的,因为数组char[] letter
已经设置为长度为0。