Индекс строки вне диапазона: n - PullRequest
0 голосов
/ 26 января 2012

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

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++;
        }
    }
}

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

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

Ответы [ 3 ]

2 голосов
/ 26 января 2012

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

2 голосов
/ 26 января 2012

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

for(int j = 0; j < b.length(); j++)
0 голосов
/ 26 января 2012

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

...