A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© qmlovewhr 中级黑马   /  2013-7-3 22:14  /  1148 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 杜光 于 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;
怎么理解两个循环中的内容,让人更容易接受些?

评分

参与人数 1黑马币 +3 收起 理由
杨兴庭 + 3

查看全部评分

5 个回复

倒序浏览
你可以往里面带入。当x=0时,只看内循环是什么样的,再当X=1时,内循环是什么样的。这样就能看明白代码了。

评分

参与人数 1黑马币 +5 收起 理由
杨兴庭 + 5

查看全部评分

回复 使用道具 举报
本帖最后由 王洪波 于 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++;
复制代码

评分

参与人数 1黑马币 +3 收起 理由
杨兴庭 + 3

查看全部评分

回复 使用道具 举报
由代码可以看出,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这两个字符串数组中有没有相同的字符串,输出字符串。
不好意思,由于没看到完整代码,以上均属个人理解,如有偏颇错误,望指正,谢谢!

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

回复 使用道具 举报
  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. }
复制代码
如果这样写的话楼主是不是看着感觉舒服些?

评分

参与人数 1黑马币 +1 收起 理由
杨兴庭 + 1

查看全部评分

回复 使用道具 举报
为了更好的维护论坛的学习氛围,如果您的的问题“已经解决”请即时将帖子状态改成“已解决”

-------------------坚持学习,黑马因你而精彩---------------
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马