理解方法removeChar

时间:2018-01-09 08:53:06

标签: java methods char

在学校,我们正在查看从字符串中删除字符的代码。 我在解释此代码中的for循环时遇到问题。 如果word.charAt(i)等于c,会发生什么?如果word.charAt(i)不等于c,则打印出该字符。 (words.charAt(i)打印出来) 但如果它等于c,代码中的哪个部分会被删除?

提前感谢您的帮助。我很抱歉我的英语不好。 这是我们老师给我们的代码:

String removeChar(String word, char c) {
  String result = "";
  for (int i = 0; i<word.length();i++) {
    if (word.charAt(i) !=c) {
      result += word.charAt(i);
    }
  }
  return result;
}

4 个答案:

答案 0 :(得分:3)

您可以阅读以下代码:

  1. 创建一个空字符串result
  2. 对于来自word的每封信,请检查它是否不是'c'字符。 仅当它不是'c'时,将此字母附加到result字符串(在result字符串的末尾添加此字母)。如果当前检查的字符等于为“c”,请执行
  3. 当循环到达word的末尾时,返回result字符串。
  4. 顺便说一下,使用String运算符在循环中追加+=并不像使用类StringBuilder及其append()方法那样高效。

答案 1 :(得分:2)

char并没有被删除; 它根本不会追加(结果+ = word.charAt(i))到字符串结果中。 通过这种方式,方法返回的字符串仅由与char c不同的字符组成。

答案 2 :(得分:0)

此代码只创建新的String对象(请参阅变量 result )。在函数结束时,这个新字符串只包含不等于 c 的字符。接下来,字符串返回作为函数的结果。

Java字符串不可变,因此这只是“修改”字符串的方法 - 创建全新的字符串。

答案 3 :(得分:-1)

实际上没有删除字符,它刚被附加到上面声明的空新字符串(String result =&#34;&#34;;),当字不包含字符&#39时; c&#39;,然后这些字符被附加到结果中,最后你正在检索&#39;结果&#39;字符串不是&#39; Word&#39;,它仍然包含您发送的相同值。