为什么我必须输入str.length()-3?请帮忙解释一下



我是编程新手,我不太明白为什么我必须把str.length()-3。如果有人能给我解释一下就太好了。归来的猫==狗;(使用编码蝙蝠码)

public static boolean catDog(String str) {
    int cats = 0;
    int dogs = 0;
    for (int i = 0; i < str.length()-3; i++) {
        if (str.substring(i, i+3).equals("cat"))
            cats += 1;
        if (str.substring(i, i+3).equals("dog"))
            dogs += 1;
    }

我建议阅读for循环:http://www.w3schools.com/js/js_loop_for.asp

此迭代器使用第二个值作为循环的分隔符。它告诉循环应该继续循环多长时间。所以在你的例子中,你说的是直到字符串的总长度减去3。

所以如果str.length()的长度是10,那么你会停在7因为str.length()-3 == 7

这里有一个例子:

 for (int i = 0; i < str.length() - 3; i++) { //starts the interation at i = 0
    if (str.substring(0, 0 + 3).equals("cat")) cats += 1; //substring from your first character(character at Index[0] till your 3th character)
    if (str.substring(0, 0 + 3).equals("dog")) dogs += 1; //substring from your first character(character at Index[0] till your 3th character)
}

如果您有一个字符串"helloWorld",您的程序将检查字符串"hel"oworld的前3个字符,如果它们是"猫"或"狗"

之后你的for-loop迭代下一个数字:

if (str.substring(1, 1 + 3).equals("cat")) cats += 1; //substring from your second character(character at Index[1] till your 4th character)
        if (str.substring(1, 1 + 3).equals("dog")) dogs += 1; //substring from your second character(character at Index[1] till your 4th character)
    }

在我们的helloWorld示例中,程序将检查h"ell"oWorld是否为"cat"或"dog"…之后,迭代再次递增,以此类推…

你在一个更大的字符串中寻找3个字符的字符串。在搜索字符串的倒数第二个字符处找到字符串"cat"的可能性有多大?这就是- 3的作用

也许如果我为您提取一个命名良好的变量:

    for (int i = 0; i < str.length() - 3; i++) {
        String threeCharactersStartingAti = str.substring(i, i + 3);
        if (threeCharactersStartingAti.equals("cat")) cats += 1;
        if (threeCharactersStartingAti.equals("dog")) dogs += 1;
    }

然后解释代码正在查看从位置i开始的3个字符。因此,对于长度为5的字符串"ABCDE",循环中的值将为:

i=0 => threeCharactersStartingAti = "ABC"
i=1 => threeCharactersStartingAti = "BCD"
i=2 => threeCharactersStartingAti = "CDE"

就是这样,我不想继续了因为对于i>=str.length()-3,字符串中没有足够的字符来得到3

相关内容

最新更新