2015-05-19 61 views
0

嗨,大家在做一个字益智游戏时,我遇到了一个问题,双重检查垂直和水平都是从我当前文件保存到一个阵列列表。索引超出限制例外Java索引:3,大小:3

String letterSize = "" + size; 
    makeLetterWordList(letterSize); 
    boolean finished = false; 
    while (!finished) { 
     finished = true; 
     for (int i = 0; i < size; i++) { 
      int randomYWord = randomInteger(wordList.size()); 
      String item = wordList.get(randomYWord); 
      puzzleListY.add(item); 
     } 
     for (int i = 0; i <= puzzleListY.size(); i++) { 
      StringBuilder sb = new StringBuilder(); 
      for (int j = 0; j <= puzzleListY.size(); j++) { 
       sb.append(puzzleListY.get(j).charAt(j)); 
      } 
      randomXWord = sb.toString(); 
      if (!wordList.contains(randomXWord)) { 
       finished = false; 
       break; 
      } else { 
       puzzleListX.add(randomXWord); 
      } 

     } 
    } 

产生的误差如下:

Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 3, Size: 3 
at java.util.ArrayList.rangeCheck(ArrayList.java:653) 

我努力寻找我的代码中的错误谁能帮助我?

+1

什么是错误中提到你的课程的第一行? – immibis

+0

一个大小为3的数组有索引0,1,2 ......找出你的代码试图访问不存在的索引3的原因。这是一个编码错误;这是一个单独的开发人员任务..使用调试器(或一支铅笔和一张纸)可以有助于追踪一个程序。 – user2864740

回答

1

循环应该只能做到大小 - 1

for (int i = 0; i <= puzzleListY.size(); i++) { // remove = 

对于其他环为好,因为你是从指数0开始,有n个元素循环应该是从0到n-1

+0

与内部循环相同的东西(使用'j')。 –

+0

啊谢谢你们都不能相信我错过了那一个 –

+0

@TedHopp我仍然收到一个错误,但是如果运行它会产生错误,但有时它会正常运行。新的错误java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:3 –