Java字符串函数

Java字符串函数,java,string,indexing,substring,Java,String,Indexing,Substring,描述以下两个功能以及它们是否执行相同的任务- 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; } publ

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

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;
}
public int Jane1(字符串输入,char-aChar){
整数计数=0;
int index=input.indexOf(aChar);
而(索引>=0){
计数++;
索引=input.indexOf(aChar,索引+1);
}
返回计数;
}
public int Jane3(字符串输入,char-aChar){
int index=input.indexOf(aChar);
如果(指数<0)返回0;
返回Jane3(input.substring(index+1),aChar)+1;
}

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

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



PS:您尝试运行代码并使用o/p进行检查?两者都显示相同的输出:
1.
2.



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

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


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

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


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

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

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

我建议您做的是,取一个字符串(编一些东西),然后用笔和纸完成每个方法。比如说

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

看看你能得到什么。您将使用这两种方法得到相同的结果,一种使用递归,另一种使用循环。用笔和纸练习将有助于你理解它,因此你可以向讲师解释每种方法试图达到的目的。

我建议你做的是,用一根绳子(编一些东西),用笔和纸练习每种方法。比如说

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

看看你能得到什么。您将使用这两种方法得到相同的结果,一种使用递归,另一种使用循环。用笔和纸练习有助于你理解它,因此你可以向讲师解释每种方法试图达到的目的。

看在上帝的份上,不要用不相关的名称命名方法。@Ahmet-这是作业。他和名字无关。在我的学校,如果你不遵守命名惯例和语法规则,分数将被切断。看在上帝的份上,不要用不相关的名字命名方法。@Ahmet-这是家庭作业。他和名字无关。在我的学校,如果你不遵守命名惯例和语法规则,分数就会被切断。