2014-09-18 4 views
-1

Пожалуйста, помогите, я получаю индекс из связанного исключения в следующем кодеПочему это для цикла, бросающего исключение IndexOutOfBoundsException?

public static void main (String[] args){ 

    String st = "harpreet"; 

    for(int i=1; i<=st.length(); i++){ 

     System.out.print(st.charAt(i)); 

    } 

} 
+2

Подсказка: индексы массива начинаются с нуля, а не один. – NPE

+0

java.lang.StringIndexOutOfBoundsException: индекс строки из диапазона: 8 \t в java.lang.String.charAt (Unknown Source) –

+1

ответ

2

массива зачетов начинаются с 0, а не 1. Если вы начинаете с 1 вы пропустите смещение 0. Кроме того, сделать сравнение < ул. length(), иначе вы выходите за пределы

for(int i=0; i< st.length(); i++){ 
0

Измените свой код, чтобы его прочитать.

for(int i=0; i< st.length(); i++){ 

Index Of the Bound означает, что вы пытаетесь ссылаться на i, которого нет в вашем диапазоне массивов. Вы падаете от своего массива, потому что массивы от 0 до n-1 не от 1 до n.

+2

Ваш код все еще начинается с 1. – Azar

+0

+1, Да @ Азар прав. –

+0

А хороший звонок Я только видел его <=. Исправлена – DanK

0

индекс массива начинается с 0, но вы вычислить длину строки начинаются с 1, как «Harpreet» длина 8, но «ч» буквенный индекс равен 0.

IndexOutOfBoundException является среда Exception и это происходит, когда вы пытаются достичь массива, которого нет.

ваш код должен быть -

for(int i=0; i< st.length(); i++) 
Смежные вопросы