数组越界错误

时间:2014-11-03 08:16:24

标签: java

我想编写将字符串拆分为单独子串的代码,每个子串都有3个字符 并将它们分配给一个字符串数组,例如字符串" abcdefg"可以吐到" abc"," bcd"," cde"," efg"并将这些分配给字符串数组。我有以下代码收到错误:

String[] words = new String[] {};
String sequence = "abcdefg";
int i;

for(i = 0; i <= sequence.length()-3; i++) {          

    words[i] = sequence.substring(i, 3+i);
    System.out.println(words[i]);
}

3 个答案:

答案 0 :(得分:6)

String[] words=new String[] {}; // empty array

你有空数组。

words[i] // when i=0

array0索引匹配时没有索引。

解。

您可以在定义array时定义数组的大小。最好的方法是从length

获取sequence
String sequence="abcdefg";
String[] words=new String[sequence.length()];

答案 1 :(得分:1)

请改用以下代码:

      String sequence="abcdefg";
      String[] words=new String[sequence.length()-2];
      int i;

      for(i=0;i<=(sequence.length()-3);i++){        
         words[i]=sequence.substring(i,3+i);
         System.out.println(words[i]);
    }

或者你可以使用字符串的arraylist

答案 2 :(得分:0)

您可以从序列字符串中获取长度除以您要存储的字符数,以便了解您的数组应该有多大。例如

String sequence="abcdefg";
int myLength = sequence.length/3;
String[] words=new String[myLength];

然后您可以使用该长度来填充数组

 for(i=0;i<=myLength;i++){          

               words[i]=sequence.substring(i,3+i);

               System.out.println(words[i]);
    }