2011-05-15 152 views
0

描述以下两种功能,以及他们是否执行同样的任务 -Java的字符串函数

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返回字符串的长度。努力让我的脑袋围绕返回的子字符串(我认为是一个字符串结果)和索引?

+2

不要为基督的缘故命名不相关的名字。 – 2011-05-15 13:39:36

+0

@Ahmet - 这是作业。他与这些名字无关。 – Cheeso 2011-05-15 13:55:37

+0

在我的学校里,如果你不遵守命名规则和语法规则,那么分数就会被截断。 – 2011-05-15 14:54:44

回答

1

它们都执行相同的任务。计算aChar出现在input多少次。第一个使用indexOf的重载版本和一个循环来实现结果。第二个版本将在第一次出现aChar时分割输入,并为第二个半部递归地调用它自己。结果是一个整数(如果没有发生,则为0,或者1 +在第二半中找到字符的次数)。 PS:为什么不写一个主类并针对不同输入运行/调试这两种方法?这是学习的最佳方式...

1

都表现出同样的输出:
1. Way 1
2. Way 2


PS:您试图运行的代码,并与O/P检查?

1

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

1

我建议你做的事情是,拿一个字符串(做点什么),用笔和纸,通过每种方法。例如

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

然后看看你会得到什么。你将通过这两种方法得到相同的结果,一个使用递归,一个使用循环。通过笔和纸来帮助你理解它,所以你可以向你的讲师解释每种方法试图达到的目标。