2016-11-24 3 views
2
for (int j = 0; j <= l - 1; j++) 
    { char c1 = str.charAt(j); 
     n[j] = c1; 
    } 
//It is showing error-arrayIndexoutofbounds 

'str' - введенная строка, а 'l' - длина строки str. Я должен хранить весь свой символ в массиве, а массив «n» имеет тип char . Я попытался сохранить его по циклу for, но его отображающая ошибка. Пожалуйста, помогите мне.Java-Хранение символов строки в массиве

+2

Как вы заявляете '' n''? – f1sh

+1

Можете ли вы разместить полный код – Mritunjay

+0

, пожалуйста, подтвердите, что массив [mcve] – Jens

ответ

4

Ваш массив n должен быть объявлен как:

char[] n = new char[str.length()]; 

Это создает массив с точным размером, необходимым для размещения всех ваших персонажей String.

ArrayIndexOutOfBoundsException вызывается при доступе к незаконному индексу массива, в этом случае я подозреваю, что ваш массив меньше длины String.

+1

Или, альтернативно, 'char [] n = new char [l]'. (<- это нижний регистр 'L', а не цифра« один ») – Thomas

+0

Спасибо, это сработало –

+3

** Обратите внимание **: Строки на Java - это Юникод UTF-16. Поскольку Unicode содержит более 65536 символов, это означает, что для некоторых символов требуется два 16-битных символа для кодирования. По этой причине Oracle [рекомендует против] (https://docs.oracle.com/javase/tutorial/i18n/text/design.html) с использованием типов 'char' для представления массивов символов (да, это слишком плохо, но Unicode перешел 16 -bit только после того, как Java уже присоединилась к нему). Вместо этого создайте массив 'int' и используйте' codePointAt' и 'codePointCount' и т. Д. –

4

Нет необходимости создавать и заполнять такой массив вручную, есть встроенный метод String.toCharArray, что делает работу для вас:

n = str.toCharArray() 
+0

Не беспокойтесь. Вы можете заменить целое for-loop одной строкой из моего ответа - он делает то же самое. – Thomas

+0

Как я могу опубликовать полный код, он также содержит некоторые другие ошибки (не синтаксис), которые я хочу получить? –

+0

Вы можете отредактировать исходный вопрос, нажав «редактировать» (прямо под своим вопросом), но, возможно, подумайте, новый вопрос, если у вас есть другие проблемы. – Thomas

2

Если вы хотите преобразовать строку в массив символов, тогда у класса string уже есть метод, называемый toCharArray().

String str = "StackOverflow"; 
char[] charArray = str.toCharArray(); 

затем, если вы хотите проверить содержимое массива, распечатайте его.

for(int i = 0;i < charArray.length ; i++) { 
    System.out.print(" " + charArray[i]); 
} 
+2

Чтобы напечатать массив, предпочтительнее использовать следующий фрагмент кода:' System.out.println (Arrays.toString (charArray)) ; ' –

+0

@Olivier Согласен. Кроме этого, этот ответ точно такой же, как у меня. – Thomas

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