2016-06-09 5 views
-2
int b[]=new int[s.length()]; 
     for(int r=0;r<=s.length();r++) 
     { 
      b[r]=(int) s.charAt(r); 
      b[r]=b[r]+2; 
     } 

Я получаю строку индекса за пределами ошибки в строке 4. Все кажется правильным. Что случилось?Строковый индекс из связанного

+1

Вам не нужно бросок, потому что 'char' может быть расширен до' int'; 'b [r] = s.charAt (r) + 2;' –

+0

Изменить 'r <= s.length()' на 'r

ответ

0

Изменение логика петли немного

int b[]=new int[s.length()]; 
     for(int r=0;r<s.length();r++) 
     { 
      b[r]=(int) s.charAt(r); 
      b[r]=b[r]+2; 
     } 

Обратите внимание, что цикл должен работать ДО г < s.length()

Проблема заключается в том, что в конце цикла величина г больше, чем максимальный индекс этого массива на 1, и поэтому s.charAt() вызывает ошибку.

0

использование:

int b[]=new int[s.length()]; 
     for(int r=0;r<=s.length()-1 ;r++) 
     { 
      b[r]=(int) s.charAt(r); 
      b[r]=b[r]+2; 
     } 

потому что Array's index начинается с 0, следовательно, ваша итерация должна работать length-1

+0

'for (int r = 0; r <= s.length() - 1; r ++) ' должен быть ' for (int r = 0; r emotionlessbananas

+0

Почему голос? –

+0

Посмотрите на свой цикл for, это причина 'String из связанного исключения' – emotionlessbananas

-1

Да, вы получите, потому что строки index начинаются с 0 и увеличивается до (string length -1). Пусть

String str=new String("Graceful")

затем

str.charAt(0)==G и str.charAt(7)==l, так что теперь то, что вы делаете, чтобы получить доступ к элементу в charAt(8)==XXX, который не содержит ничего и вы получаете индекс строки из границы.
MySolution Что вы можете сделать, это код изменения

for(int r=0;r<str.length();r++)

или

for(int r=0;r<=str.length()-1;r++).

+0

Почему мой код был занижен, так как он содержит -1 тоже? Я не понимаю @holidayCoder –

+0

Thats not me ... – emotionlessbananas

+0

Ок, извините, я думал, что сделал это, а затем кто-то это сделал, любезно исправил его. Потому что мой код работает отлично. –

0

Не забывайте, что массив начинается с 0 и Размер или длина массива начинается с 1. Проблема заключается в том, что цикл находится внутри цикла.

0

Вы не нормально цикл массив как это:

for(int r=0;r<=s.length();r++) 

только потому, что массивы являются нулевыми объектами индекса, т.е.

вы можете элементы, расположенные в диапазоне от 0 до длины-1

[0, длина)

т.е. делать

for(int r=0; r<s.length(); r++) 

сейчас, вы пытаетесь получить элемент @length и что является причиной исключения

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