使用递增循环查找子字符串

时间:2016-11-04 01:19:29

标签: java for-loop while-loop increment post-increment

在阅读Oracle Docs时,我遇到的代码是在经过2个晚上的努力后无法分解的。

以下是代码:

String searchMe = "Look for substring in me";
    String subString = "sub";
    boolean foundIt = false;
    int max = searchMe.length() - subString.length();

    test:
        for(int i=0;i<=max;i++)
        {
            int j = i;
            int k = 0;
            int n = subString.length(); //k

            while(n-- != 0)
            {
                //1 not equal to 0?
                if(searchMe.charAt(j++) != subString.charAt(k++))
                {
                    System.out.println(j+": "+searchMe.charAt(j)+" "+k+": "+subString.charAt(k));
                    continue test;
                }
            }

            foundIt = true;
            break test;
        }

    System.out.println(foundIt ? "found it": "did not find it");

看一下,似乎while循环检查searchMe中的char是否不等于subString中的char,如果没有则返回for循环。

当它返回到for循环时,我预计n值会因post-decrement而递减,但是当我打印出来时,值保持不变。

k发生了同样的情况,post increment应该在if statement中增加了它的值,但事实并非如此。

以下是我获得的打印值,因为您可以看到k value保持完全相同。

1: o 1: u
2: o 1: u
3: k 1: u
4:   1: u
5: f 1: u
6: o 1: u
7: r 1: u
8:   1: u
9: a 1: u
10:   1: u
11: s 1: u
found it

P.S我知道在一个语句中增加的内容是有效的,因为我之前在while语句中尝试过它并且它做得很好。

0 个答案:

没有答案