Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中,将值从一个字符数组分配到另一个字符数组_Java_Arrays - Fatal编程技术网

在java中,将值从一个字符数组分配到另一个字符数组

在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[] = {};

我正在编写程序来消除字符串中的元音。我要做的是检查字符串中字符的值是否为元音。如果为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[] = {};
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阅读我答案的最后一行。即使我为数组分配空间,我仍然会遇到相同的错误。