2014-11-03 64 views
1

我想要编写的代码将字符串拆分为不同的子字符串,每个字符串包含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]); 
} 

回答

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

+0

它的工作原理,谢谢很多 – 2014-11-03 08:31:29

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

你有空数组。

words[i] // when i=0 

存在空array匹配无索引与0个索引。

解决方案。

您可以在定义array时定义数组的大小。最好的办法是让lengthsequence

String sequence="abcdefg"; 
String[] words=new String[sequence.length()]; 
+0

感谢,OI如何定义数组,这样的循环工作 – 2014-11-03 08:20:27

+0

的String []字=新的String [(INT) Math.ceil(secuence.legth()/ 3)]; – jjlema 2014-11-03 08:21:22

+0

@XLAnt不,它不会失败.http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#substring%28int,%20int%29 – 2014-11-03 08:31:09

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]); 
    }