【问题标题】:Java String FunctionJava 字符串函数
【发布时间】:2011-08-25 21:46:54
【问题描述】:

描述以下两个函数以及它们是否执行相同的任务-

public int Jane1(String input, char aChar) {
    int count = 0;
    int index = input.indexOf(aChar);
    while (index >= 0) {
        count++;
        index = input.indexOf(aChar, index + 1);
    }
    return count;
}

public int Jane3(String input, char aChar) {
    int index = input.indexOf(aChar);
    if (index < 0) return 0;
    return Jane3(input.substring(index + 1), aChar) + 1;
}

我认为他们不执行相同的任务,但我不确定解释。 Jane3 函数使用递归调用来返回字符串输入的长度,而 Jane1 则返回字符串的长度。努力弄清楚返回子字符串(我认为是字符串结果)和索引之间的区别?

【问题讨论】:

  • 看在上帝的份上,不要用不相关的名称命名方法。
  • @Ahmet - 这是家庭作业。他与这些名字无关。
  • 在我的学校里,如果你不遵守命名约定和语法准则,分数就会被截断。

标签: java string indexing substring


【解决方案1】:

他们都执行相同的任务。计算aChar 出现在input 的次数。第一个使用indexOf 的重载版本和循环来实现结果。第二个版本将在第一次出现aChar 时拆分输入,并在后半部分递归调用自身。结果是一个整数(如果没有发生,则为 0,或 1 + 在后半部分中找到该字符的次数)。

PS:您为什么不编写一个主类并针对不同的输入运行/调试这两种方法?这是最好的学习方式...

【讨论】:

    【解决方案2】:

    Jane1 使用 while 循环,而 Jane3 使用递归。这应该是一个好的开始。两者都返回一个字符在字符串中出现的次数。

    【讨论】:

      【解决方案3】:

      我建议你做的是拿一根绳子(编一些东西),然后用笔和纸,完成每种方法。例如

      Jane1("This is my homework", 'i');
      Jane3("This is my homework", 'i');
      

      然后看看你会得到什么。您将通过这两种方法给出相同的结果,一种使用递归,另一种使用循环。用笔和纸完成工作将有助于您理解它,因此您可以向您的讲师解释每种方法要达到的目的。

      【讨论】:

        【解决方案4】:

        两者都显示相同的输出:
        1.Way 1
        2.Way 2


        PS:您尝试运行代码并使用 o/p 进行检查?

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2010-11-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-04-02
          • 1970-01-01
          • 2011-09-08
          • 2013-01-03
          相关资源
          最近更新 更多