java.lang.IndexOutOfBoundsException:无效的位置1,大小为1

时间:2012-04-05 06:25:39

标签: android

虽然我试图从arraylist获取价值,但我得到以下错误。我的示例代码如下.test是我的数组列表的名称

String s = test.get(1);

04-05 11:51:42.525: E/AndroidRuntime(901): java.lang.IndexOutOfBoundsException: Invalid location 1, size is 1
04-05 11:51:42.525: E/AndroidRuntime(901):  at java.util.ArrayList.get(ArrayList.java:341)

)     04-05 11:51:42.525:E / AndroidRuntime(901):在android.app.Activity.onMenuItemSelected(Activity.java:2170)

5 个答案:

答案 0 :(得分:2)

你的字符串数组大小为1,这意味着它只有一个字符串而且为0.你想从字符串数组中得到什么?我认为你想要的代码是

if(test.size() >=1)
   String s = test.get(0);//magical numbers are evil by the way the good book told me so

请注意,这不是非常糟糕的做法,您应该发布更多代码,以便我们知道您为什么需要该数组的第一个或第二个字符串。

答案 1 :(得分:2)

只需检查您案例中的test.size() 1,这就是为什么使用String s = test.get(0);

始终先检查size of your listarray's length。然后根据它获取值。 请记住,所有数组和列表始终以0开头,在这种情况下,最后一个元素始终是列表的大小() - 1。

答案 2 :(得分:1)

Invalid location 1, size is 1表示ArrayList以index [0]开头。如果您使用get(1),您将收到第二个条目。

答案 3 :(得分:0)

您的ArrayList大小为1,因此其位置为0

试试这段代码

String s= test.get(0);

答案 4 :(得分:0)

首先,你的arraylist大小是你可以使用test.size();

得到的

所以现在我们都知道数组索引从零开始,你可以获取test.get(0);在arraylist中检索第一个元素,如果你尝试获取test.get(1)的下一个元素,你将获得IndexOutBound Exception ...