#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. Я все еще сталкиваюсь с той же ошибкой, даже когда я выделяю пространство для массива.