2012-01-26 3 views
0

У меня есть проблема с этим кодом при каждом его выполнении, он дает мне ошибку Индекс строки за пределами диапазона: 'n' n - нет. символов, введенных в текстовое поле, относящееся к этому коду ... (то есть textbox - t2.) он застревает в первом текстовом поле, проверяя, что он не переходит к следующему, как упоминалось в массиве.Индекс строки за пределами допустимого диапазона: n

Object c1[] = { t2.getText(), t3.getText(), t4.getText() };  
String b; 
String f; 
int counter = 0; 
int d; 
for(int i =0;i<=2;i++) 
{ 
    b = c1[i].toString(); 
    for(int j=0;j<=b.length();j++) 
    { 
     d = (int)b.charAt(j); 
     if((d<65 || d>90)||(d<97 || d>122)) 
     { 
      counter++; 
     } 
    } 
} 

это в основном код подтверждения, что я пытаюсь сделать без исключений и прочее (все еще в процессе обучения :))

любая помощь будет оценена ТНХ очень много.

+0

Правильно ли я читаю ваш код: вы пытаетесь подсчитать несимволы в записях массива 'c1'? – nfechner

+0

no.im пытается проверить входные данные, которые должны проверять, находятся ли введенные символы между A-B или a-b. –

ответ

2

Использование <, а не <= при итерации по строке. С <= вы получаете ошибку за пределами, когда j равно длине строки. Помните, что символы в строке индексируются начиная с нуля.

for(int j = 0; j < b.length(); j++) 
+0

thx очень много работало. –

1

В Java string.charAt(string.length()) будет вне пределов, так как строка 0 индексируется и поэтому последний символ в string.length() - 1.

+0

thx для уведомления о том, что он работает сейчас. –

0

Строки индексируются начиная с 0. Ваш второй цикл цикла заканчивается на b.length, который всегда будет на 1 больше, чем самый высокий индекс для этой строки. Вместо этого измените его на j < b.length.

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