0

在java中,我通过这一行创建了一个String类型的数组,这一行String [] ars = {};没有显示错误。但是当我试图ars[i++] = g;在 i 等于 0 的这一行插入一个字符串时,它给了我java.lang.ArrayIndexOutOfBoundsException: 0 为什么?

4

5 回答 5

3

数组是固定大小的,创建后不能向其中添加元素。由于您的数组的大小为 0,因此在索引 0 处访问它是超出范围的。

如果您想String在创建集合后将元素添加到您的集合中,那么您可能需要考虑使用一个集合,例如java.util.ArrayList<String>. 你可以像这样使用它:

//import java.util.*;
ArrayList<String> ars = new ArrayList<String>();
ars.add(g);
于 2013-07-03T19:51:15.917 回答
2

数组的大小是固定的。如果索引等于或超过数组大小,则无法添加元素。即只能使用0to array.length- 1 的值。在这里,您尝试将索引处的值分配给一个0大小为零的数组,从而导致AIOOBE.

使用一个集合,例如ArrayList在添加元素时如果需要可以扩展其容量。

于 2013-07-03T19:47:16.547 回答
1

在 java 中,您需要指定您想要的数组有多大,并且您不能在不创建新数组的情况下更改该大小。

最好的方法是使用ArrayList或List的其他实现。

于 2013-07-03T19:48:48.570 回答
1

不要使用数组。使用 ArrayList。Java中的数组在分配时是固定长度的,永远不能增加。您的代码使 ars 引用长度为 0 的数组,因此除非您将其指向一个新数组,否则它永远不会更大。这就是 ArrayList 类的目的——成为一个可以随时间增长/缩小的可变长度数组。

于 2013-07-03T19:48:57.593 回答
0

出现此错误会导致您在 [0] 中没有任何内容,在 {} 中没有任何内容;

这样,你就有了:字符串 a = {"zero", first},其中 a[0] = 零,a[1] = first

你也可以试试,这样;

声明一个 int tam = 0;

并创建你的数组: String a = new String[tam];

所以在你可以改变数组的长度之后,改变变量 tam;

于 2013-07-03T20:53:39.010 回答