2014-11-21 5 views
0

Я пытаюсь написать программу, которая разбивает String на ArrayList, но я продолжаю получать java.lang.StringIndexOutOfBoundsException: String index out of range: <length of string>. У кого-нибудь есть идеи? (У меня есть ArrayList и List классы уже импортированные)StringIndexOutOfBoundsException в списке <Character>

public static void main(String[] args) 
{ 
    String test = "Hello, World!"; 
    int testLength = test.length(); 
    List<Character> testChars = new ArrayList<Character>(); 
    for(int i = 1; i <= testLength; i++){ 
     testChars.add(test.charAt(i) 
    } 
    System.out.println(testChars); 
} 

ответ

2

Исключение происходит, когда i достигает testLength, так как индекс начинается с нуля и заканчивается на длине строки минус 1.

Изменение

for(int i = 1; i <= testLength; i++){ 

в

for(int i = 0; i < testLength; i++){ 
+1

СПАСИБО ВАС !!!! Я также изменил int i = 1; к int i = 0; потому что первая буква была опущена ... –

2

Th e индексов строковых символов переходят от 0 к test.length()-1.

Поэтому цикл должен быть:

for(int i = 0; i < testLength; i++){ 
+0

Это потому, что Java индексируется нулями. –

0

Оба ответа являются правильными. Помните, что массивы (и так Strings) в Java нулевые индексируются, поэтому вы должны начинать с 0, иначе вы потеряете первый элемент. В то время как массив начинается с 0, то должно быть testLength - 1.

если testLength составляет 10, то 0..9 является 10, так что вы должны перебираем 0 до 9

for(int i = 0; i <= testLength -1; i++) 
0

Для цикла необходимо изменить. начинаются с 0, а условие остановки может быть либо i < = testLength-1, либо просто i < testlength.

Смежные вопросы