作为一名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);
}
}
答案 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]);
}
}