我正在编写一个将电话目录信息存储在一个数组中的java程序。每当我试图在这个数组中放入一些条目时,我就会得到OutOfBound异常。
private int size = 0;
private Entry[] entryList = new Entry[size];
public ArrayDirectory(){
}
@Override
public void Add(String surName, String initials, int telNumber) {
entryList[size] = new Entry(surName, initials, telNumber);
size++;
}
public static void main(String[] args){
ArrayDirectory directory = new ArrayDirectory();
directory.Add("Charles", "Johnson", 1234);
System.out.println(directory.entryList.length);
}
感谢您的关注
答案 0 :(得分:4)
阵列是固定大小的。只要您使用设置的大小创建它们,它就是它们可以容纳的最大元素数。
private int size = 0;
private Entry[] entryList = new Entry[size];
您创建一个大小为0的数组,这意味着不能在其中设置任何元素。
private int size = 5;
允许您使用索引将最多5个元素放入其中:0,1,2,3,4
更好的解决方案是通过ArrayList
使用动态数组。这将在添加更多元素时动态调整大小。
List<Entry> entryList = new ArrayList<Entry>();
entryList.add(new Entry());
答案 1 :(得分:2)
数组不能像ArrayList
那样动态扩展。您初始化了一个大小为0的数组,它永远不能容纳任何元素。
因此,要么使用ArrayList
,它会动态增加大小,要么使用您想要/可能花费的最大空间来初始化数组。
答案 2 :(得分:0)
在您的代码的最开始,您有这个
private int size = 0;
private Entry[] entryList = new Entry[size];
这意味着,您创建了大小为0的数组,因此该数组没有任何&#34;单元格&#34;,并访问导致异常的任何值。