2014-11-03 89 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]); 
    }