本帖最后由 杨国祯 于 2012-4-23 15:50 编辑
给你这个例子把里面注释很详细 ,这里给你的的还是一个调试方法,注意看结果,代码中间给你穿插了打印方法
public staticString getSubString(String str, String str1) { Stringmax = null,min = null; max= (str.length() > str1.length()) ? str : str1;//"skjalksdgfsajflskj" min= max.equals(str) ? str1 : str;//"ahdskjalksdg" for (int i = 0; i <max.length(); i++) {
System.out.println("第" + i + "次循环" +"i="+i); 不知道你这是哪里的代码,但是很显然的是,这是你自己构建了一种情况,目的是截取自己想要的特定字符串
问题一:为什么 y = max.length()-i 因为max.length() 是18,而条件min.length()+1是13,y不减去 i 的话嵌套的for里面的语句就执行不到 for (int x = 0, y = max.length()- i; y < min.length() + 1; x++, y++) {System.out.println("内循环第" + y + "次循环" +"y="+y); Stringsub = min.substring(x, y); if (max.contains(sub))// 判断获得字符串是包涵与最大字符串中,则返回字符串 { return sub; } } }
问题二: 为什么要y++呢,因为y是一个判断的条件,而你这里只有在y小于13的时候才会循环,找到循环的时候y++能够在符合条件的情况下多循环几次
第0次循环i=0
第1次循环i=1
第2次循环i=2
第3次循环i=3
第4次循环i=4
第5次循环i=5
第6次循环i=6
开始内循环第y=12 刚开始是12 y++后 直接跳出
第7次循环i=7
开始内循环第y=11 后来是11,多执行了一次
开始内循环第y=12
第8次循环i=8
开始内循环第y=10 再往下很直接,里面终于出现了,满足你自己设置的条件的字符串
开始内循环第y=11
开始内循环第y=12
第9次循环i=9
开始内循环第y=9
开始内循环第y=10
开始内循环第y=11
开始内循环第y=12
skjalksdg 你的代码想得到的字符串
|