Присваивать значение из одного массива символов в другой в java

#java #arrays

#java #массивы

Вопрос:

Я пишу программу для устранения гласных в строке. Что я хочу сделать, так это проверить, является ли значение символа в строке гласной. Если оно равно false, я хочу сохранить его в другом массиве следующим образом:

 if(isVowel(char_str[i]) == false) {
    temp[index] = char_str[i];
    index = index   1;
}
 

Я получаю исключение array out of Bounds для 2-й строки. Я инициализировал оба массива следующим образом:

 String str="Education";
char char_str[]=str.toCharArray();
char temp[] = {};
 

Может кто-нибудь точно объяснить, что я делаю, что вызывает ошибку. Я немного не в курсе работы с массивами в Java.

Ответ №1:

Вы не можете добавить элемент в подобный массив, не указав длину массива. Вместо этого вы можете использовать ArrayList для добавления новых элементов без указания длины. Итак, либо инициализируйте длину массива следующим образом —

 char temp[] = new char[100]; // Assuming 100 is the highest length
 

или объявить ArrayList подобное —

 List<Character> temp = new ArrayList<Character>();
 

Вы можете добавить новый элемент в ArrayList с помощью add метода.

 temp.add(char_str[i]);
 

Ответ №2:

Вы пытаетесь получить доступ к элементу пустого массива.

Эта строка

 char temp[] = {};
 

Создает пустой массив — массив без элементов.

Итак, это

 temp[index] = ...
 

Взорвется, потому что нет позиций для присвоения значения.

Выделите некоторое пространство, например:

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

Комментарии:

1. @Kira_99 прочитайте последнюю строку моего ответа.

2. Я все еще сталкиваюсь с той же ошибкой, даже когда я выделяю пространство для массива.