2016-02-05 5 views
-1

С учетом строки напечатайте количество алфавитов, присутствующих в строке. Вход: Первая строка ввода содержит целое число T, обозначающее количество тестовых случаев. Ниже приводится описание Т-тестов. Каждый тестовый пример содержит одну строку. Выход: Распечатайте количество алфавитов, присутствующих в строке.Что здесь означает ArrayIndexoutofBoundsException?

Это вопрос, который я пытался решить этот вопрос на eclipse, но он продолжает бросать ArrayIndexoutOfBoundsException в строке 7 моего кода. Я попытался понять, что я сделал неправильно, но я не смог. Может кто-нибудь объяснить, что здесь не так. Я прикрепил код.

public class solution { 
    public static void main(String[] args){ 
     String s = "baibiasbfi" ; 
     int count =0; 
     for(int i=0;i<=s.length();i++){ 
      char[] a= s.toCharArray(); 
      if(a[i]>='a'&& a[i]<='z'||a[i]>='A'&&a[i]<='Z') 
       count++;} 
    System.out.println(count); 
    } 
} 
+1

, чтобы избежать этого использовать исключение I Vaseph

+0

основном то, что ArrayIndexOutOfBoundsException означает, что вы пытаетесь получить доступ к позиции вашего массива 'a', что это за доступ. В этом случае ваша строка 'baibiasbfi' имеет 10 символов, что означает, что вы можете получить к ней доступ с позиции 0 до 9. Когда вы выполняете' i <= s.length() 'и с' s. length' равно размеру массива, который равен 10, вы пытаетесь получить доступ к позиции 10 массива, который недоступен. Чтобы решить эту проблему, удалите '=' из вашего условия 'i <= s.length()', и проблема будет решена. – aribeiro

+0

спасибо .. это помог – jenygeorge

ответ

0
i <= s.length(); 

в вашем for loop должен быть:

i < s.length(); 

ArrayIndexOutOfBoundsException брошен:

, чтобы указать, что массив обращался с незаконным индекса. Индекс является либо отрицательным, либо большим или равным размеру .

+0

большое спасибо ............ он сработал. – jenygeorge

0

В java массивы от 0 до length-1. Вы используете свой цикл, сравниваете его с i<=s.length(). Это означает, что ваш цикл возвращает длину массива. Это дает ArrayIndexoutofBoundsException.

Замените петлю с:

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