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

时间:2015-01-02 17:58:55

标签: 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);
    }
}

2 个答案:

答案 0 :(得分:3)

String.replace 返回新字符串。在上面的代码段中,永远不会使用返回值。尝试这样的事情:

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

此外,无需检查字符串str是否包含&#39; a&#39;,只需执行replace,因为如果针(&#39; a&#)将无效39;)没有找到,就像你期望的那样。这反过来使内环过剩并且可以被移除。最后你会有这样的事情:

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

答案 1 :(得分:0)

以下是解决方案: 记住:String对象是不可变的!

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]); 
    }
}