Java ArrayList IndexOutOfBoundsException 索引:1,大小:1

Posted

技术标签:

【中文标题】Java ArrayList IndexOutOfBoundsException 索引:1,大小:1【英文标题】:Java ArrayList IndexOutOfBoundsException Index: 1, Size: 1 【发布时间】:2013-10-28 00:52:26 【问题描述】:

我正在尝试用 Java 读取某个文件并将其制成多维数组。每当我从脚本中读取一行代码时,控制台都会显示:

Caused by: java.lang.IndexOutOfBoundsException: Index: 1, Size: 1

我知道这个错误是编码无法达到特定索引时引起的,但我目前不知道如何解决。

这是我的编码示例。

int x = 1;
while (scanner.hasNextLine()) 
  String line = scanner.nextLine();
  //Explode string line
  String[] Guild = line.split("\\|");
  //Add that value to the guilds array
  for (int i = 0; i < Guild.length; i++) 
    ((ArrayList)guildsArray.get(x)).add(Guild[i]);
    if(sender.getName().equals(Guild[1])) 
      //The person is the owner of Guild[0]
      ownerOfGuild = Guild[0];
    
  
  x++;

**文本文档**

Test|baseman101|baseman101|0|
Test2|Player2|Player2|0|

其他解决方案,例如在此处找到的解决方案:Write to text file without overwriting in Java

提前致谢。

【问题讨论】:

嗯,异常说明了异常级别发生的事情。数组大小为 1,您访问位置 1。您的逻辑不对! 我以为 ArrayLists 是动态增加的? 它们确实会增加,但是它们是基于 0 的,并且访问比实际更大的索引会导致异常 【参考方案1】:

问题 1 -> int x = 1; 解决方法:x应该以0开头

问题 2->

((ArrayList)guildsArray.get(x)).add(Guild[i]);

你正在增加x 所以if x &gt;= guildsArray.size() 然后你会得到java.lang.IndexOutOfBoundsException

解决方案

if( x >= guildsArray.size())
      guildsArray.add(new ArrayList());
for (int i = 0; i < Guild.length; i++) 
    ((ArrayList)guildsArray.get(x)).add(Guild[i]);
    if(sender.getName().equals(Guild[1])) 
      //The person is the owner of Guild[0]
      ownerOfGuild = Guild[0];
    
  

【讨论】:

这真的救了我的命。【参考方案2】:

问题出现在这里:

... guildsArray.get(x) ...

但是是这里引起的:

int x = 1;
while (scanner.hasNextLine()) 
   ...

因为集合和数组都是从零开始的(第一个元素是索引0)。

试试这个:

int x = 0;

【讨论】:

以上是关于Java ArrayList IndexOutOfBoundsException 索引:1,大小:1的主要内容,如果未能解决你的问题,请参考以下文章

java.util.ConcurrentModificationException at java.util.ArrayList$ArrayListIterator.next(ArrayList.

java.util.ConcurrentModificationException at java.util.ArrayList$ArrayListIterator.next(ArrayList.

java编程hashmap,arraylist

Java:如何将 ArrayList 拆分为多个小的 ArrayList?

java ArrayList嵌套ArrayList

如何在 Java 中从 ArrayList 中切出 ArrayList?