走出界限异常

时间:2014-03-25 11:27:23

标签: java arrays

我正在编写一个将电话目录信息存储在一个数组中的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);
}

感谢您的关注

3 个答案:

答案 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;,并访问导致异常的任何值。