黑马程序员技术交流社区

标题: 碰到了这个,有点不解 [打印本页]

作者: qmlovewhr    时间: 2013-7-3 22:14
标题: 碰到了这个,有点不解
本帖最后由 杜光 于 2013-7-4 10:23 编辑

for(int x=0;x<min.length();x++)
                {
                        for(int y=0,z=min.length()-x;z!=min.length()+1;y++,z++)
                        {
                                String temp=s2.substring(y,z);
//                                sop(temp);
                                if(max.contains(temp))
                                        return temp;
怎么理解两个循环中的内容,让人更容易接受些?
作者: 王靖远    时间: 2013-7-3 22:20
你可以往里面带入。当x=0时,只看内循环是什么样的,再当X=1时,内循环是什么样的。这样就能看明白代码了。
作者: 王洪波    时间: 2013-7-3 22:32
本帖最后由 王洪波 于 2013-7-3 22:34 编辑

我改变下形式,以便于理解:
  1. for(int x=0;x<min.length();x++)
  2. {        
  3.          int y=0,z=min.length()-x;//初始化变量
  4.                         
  5.          while(z!=min.length()+1)//循环条件
  6.          {      
  7.                     String temp=s2.substring(y,z);
  8. //                  sop(temp);
  9.                     if(max.contains(temp))
  10.                           return temp;
  11.                                 
  12.                     //改变迭代量
  13.                     y++;
  14.                     z++;
复制代码

作者: enmoor    时间: 2013-7-3 23:41
由代码可以看出,min、max和s2应该是字符串数组。min.length是求字符串长度的,假设其值为10,即代码如下
for(int x=0;x<10;x++)//
                {
                        for(int y=0,z=10-x;z!=10+1;y++,z++)
                        {
                                String temp=s2.substring(y,z);
//                                sop(temp);
                                if(max.contains(temp))
                                        return temp;
现在开始运行:
x=0时,y=0,z=10,由于“z不等于10+1”这一条件成立,所以继续。定义字符串变量temp,其值等于s2这个数组中下标为y到下标为z之间的字符,这块了解不?sop(temp),这里sop是你定义的方法,可以理解为子函数,temp是参数。再往下是if语句,如果max这个数组里有temp字符串,返回这个字符串。
总结来说,就是比较s2和max这两个字符串数组中有没有相同的字符串,输出字符串。
不好意思,由于没看到完整代码,以上均属个人理解,如有偏颇错误,望指正,谢谢!
作者: 王广亚    时间: 2013-7-3 23:58
  1. for(int x=0;x<min.length();x++){
  2.                         int y=0;                                                            //把y从内for循环条件语句里提取出来放在外边是一样的
  3.             for(int z=min.length()-x;z!=min.length()+1;z++){
  4.                 String temp=s2.substring(y,z);
  5. //              sop(temp);
  6.                 if(max.contains(temp))return temp;
  7.                 y++;                                                             //y++也提取出来了、
  8.         }

  9. }
  10. }
复制代码
如果这样写的话楼主是不是看着感觉舒服些?

作者: 杨兴庭    时间: 2013-7-4 07:36
为了更好的维护论坛的学习氛围,如果您的的问题“已经解决”请即时将帖子状态改成“已解决”

-------------------坚持学习,黑马因你而精彩---------------




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2