2015-02-28 5 views
2

Итак, я написал простую программу, чтобы ввести строку и подсчитать общее число. м. Итак, вот мой кодstring index out of bound exception, String index out the range

for(int i=0; i<=n; i++) 
    { 
     if((str.charAt(i)=='m')) 
     { 
     } else { 
      count++; 
     } 
    } 
    System.out.println("The total number of m is "+count); 

где n=str.length(); и ул является строкой, которую я взял, но там эта ошибка, которая продолжает прибывать

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 14 
at java.lang.String.charAt(String.java:646) 
at javaapplication.JavaApplication.main(JavaApplication.java:28 
Java Result: 1 

что эта ошибка и как ее устранить?

+0

n = str.length(); –

+0

'count ++' должен находиться в блоке 'if', а не в блоке' else', так как вы пытаетесь подсчитать количество m. –

ответ

5

Строка length() == n имеет действительные индексы от 0 до n-1;

Изменить

for(int i=0; i<=n; i++) 

в

for(int i=0; i<n; i++) 
+0

, что один из них работал для меня! Спасибо –

0

Запомните Строки нумеруются от 0 до stringName.length() - 1. Так как вы перебор StringName длины() -. Вы на самом деле выходя за пределы «границ» строки, которая вызывает ошибку. Вам нужно убедиться, что ваши индексы верны в вашем цикле for.

0

Символы в переменной String начинаются с индекса 0.

Также, если вы хотите посчитать общий внешний вид маленькой буквы m, переместите count++ на ваш if block statement.

n=str.length() - 1; 
    for(int i=0; i<=n; i++) 
     { 
      if((str.charAt(i)=='m')) 
      { 
        count++; 
      } 
     } 
     System.out.println("The total number of m is "+count); 
0

Представьте у вас есть следующий массив длины 7:

----------------------------- 
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | <-- Array index 
----------------------------- 
|10 |20 |30 |40 |50 |60 |70 | <-- Array values 
----------------------------- 

А для петли for(int i=0; i<=n; i++) в этом случае будет цикл 8 раз повторяется для из индекса 0 до 7.

Но элемент массива при индексе не существует, следовательно, дает outOfBoundsException.

Где, как для петли for(int i=0; i<n; i++) будет цикл 7 раз от повторяется для 0 до 6.

0

Шара работает с индексом (работает от п-1), но в вашем вам получить кондиционировать, где у вас есть я = п, в этом случае Шара выбрасывает исключение, потому что он не имеет, что индекс в массиве

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