循环遍历字符串数组,并删除元音 'a' (java)

Loop through an array of strings, and remove the vowel 'a' (java)

作为 java 初学者,我正在尝试完成一个简单的练习,从字符串数组的每个元素中删除字符 'a' 的所有实例,然后打印所有元素。

下面的代码,简单地输出数组不变(仍然包含一个)。

我相信我已经找到了实现它的替代方法,但我仍然不明白为什么下面的失败,出于学习目的我想知道。如有任何建议,我们将不胜感激。

public static void main(String[] args) {
    String instruments[] = {"cello", "guitar", "violin", "double bass"};

    for (int i = 0; i < instruments.length; i++) {
        String str = instruments[i];

        for (int b = 0; b < str.length(); b++) {
           char a = str.charAt(b);

           if (str.charAt(b) == 'a') {
              str.replace("a", "");
           }
        }
        System.out.println(str);
    }
}

String.replace returns 新字符串。在上面的代码片段中,从未使用 return 值。尝试这样的事情:

instruments[i] = str.replace("a", "");

也不需要检查字符串str是否包含'a',只要做一个replace因为如果针('a')是什么都不做没有找到,正如您所期望的那样。这反过来又使内环多余并且可以被移除。最后你会得到这样的东西:

for (int i = 0; i < instruments.length; i++) {
    instruments[i] = instruments[i].replace("a", "");
} 

解决方法如下: 请记住:字符串对象是不可变的!

public static void main(String[] args) {

String instruments[] = {"cello", "guitar", "violin", "double bass"};

for (int i = 0; i < instruments.length; i++) {
    instruments[i] = instruments[i].replace("a", "");
    System.out.println(instruments[i]); 
    }
}