2014-11-03 7 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

это работает, спасибо много –

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

у вас есть пустой массив.

words[i] // when i=0 

нет индекса в пустом array матче с 0 го индекса.

Решение.

Вы можете определить размер массива в момент, когда вы определяете array. Лучший способ получить length от sequence

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

спасибо, как О.И. определить массив так, чтобы петля работает –

+0

String [] слова = новый String [(Int) Math.ceil (secuence.legth()/3)]; – jjlema

+0

@XLAnt нет, это не подведет. Http: //docs.oracle.com/javase/7/docs/api/java/lang/String.html#substring%28int,%20int%29 –

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]); 
    } 
Смежные вопросы