在java中,将值从一个字符数组分配到另一个字符数组
我正在编写程序来消除字符串中的元音。我要做的是检查字符串中字符的值是否为元音。如果为false,我希望将其存储在另一个数组中,如下所示:在java中,将值从一个字符数组分配到另一个字符数组,java,arrays,Java,Arrays,我正在编写程序来消除字符串中的元音。我要做的是检查字符串中字符的值是否为元音。如果为false,我希望将其存储在另一个数组中,如下所示: if(isVowel(char_str[i]) == false) { temp[index] = char_str[i]; index = index + 1; } String str="Education"; char char_str[]=str.toCharArray(); char temp[] = {};
if(isVowel(char_str[i]) == false) {
temp[index] = char_str[i];
index = index + 1;
}
String str="Education";
char char_str[]=str.toCharArray();
char temp[] = {};
char temp[] = new char[char_str.length];
我得到了第二行的数组越界异常。我已对两个阵列进行了初始化,如下所示:
if(isVowel(char_str[i]) == false) {
temp[index] = char_str[i];
index = index + 1;
}
String str="Education";
char char_str[]=str.toCharArray();
char temp[] = {};
char temp[] = new char[char_str.length];
有人能准确地解释我所做的导致错误的事情吗。我对Java中数组的工作有点不熟悉。您试图访问空数组的元素 这条线
char temp[] = {};
创建一个空数组-一个没有元素的数组
那么这个
temp[index] = ...
将爆炸,因为没有可指定值的位置
分配一些空间,例如:
char temp[] = new char[str.length()];
如果不指定数组长度,则无法将元素添加到这样的数组中。您可以使用ArrayList来添加新元素,而无需指定长度。因此,要么像这样初始化数组长度-
char temp[] = new char[100]; // Assuming 100 is the highest length
List<Character> temp = new ArrayList<Character>();
或者像这样声明一个ArrayList-
char temp[] = new char[100]; // Assuming 100 is the highest length
List<Character> temp = new ArrayList<Character>();
您需要使用足够的长度或大小初始化temp[]。假设char_str[]中没有一个字符是元音,则temp[]的大小必须等于char_str[]的大小。因此,temp[]的大小取决于char_str[]的大小。因此,您需要声明如下:
if(isVowel(char_str[i]) == false) {
temp[index] = char_str[i];
index = index + 1;
}
String str="Education";
char char_str[]=str.toCharArray();
char temp[] = {};
char temp[] = new char[char_str.length];
但是,假设char_str[]中的所有字符都是元音,那么在temp[]中保留的所有空格都将被浪费。因此,您可以使用行为类似于动态数组的数据类型(例如ArrayList),而不是使用固定大小的数组
List<Character> temp = new ArrayList<>();
从中了解有关ArrayList的更多信息
此外,请始终遵循以下步骤,例如char_str应命名为charStr。@Kira_99阅读我答案的最后一行。即使我为数组分配空间,我仍然会遇到相同的错误。