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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 骑着乌龟去旅行 中级黑马   /  2014-12-1 20:09  /  1603 人查看  /  13 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

for (int i = 0; i < str.length(); i++)
        {
        for(int start=0, end=str.length()-i;end != str.length()+1;start++,end++)
        {
       
        }
        }

我想问一下,这个end 的数值是怎么变换的,我怎么感觉没变呢,前面减一了,后面有自增 1

13 个回复

倒序浏览
for循环的前面是初使化int start=0, end=str.length()-i这是初使化部分,只执行一次啊!

评分

参与人数 1技术分 +1 收起 理由
船长 + 1 船长专业点赞20年!

查看全部评分

回复 使用道具 举报
C语言中的逗号操作符,不是变量声明定义时的逗号分隔符(int a, b;),在这里就是int start=0, end=str.length()-i;在JAVA中也有,但是利用的地方有限,在java中唯一可以用的地方就是在for循环中,start++,end++两条独立的语句都会执行。
回复 使用道具 举报
天天小志 发表于 2014-12-1 23:10
for循环的前面是初使化int start=0, end=str.length()-i这是初使化部分,只执行一次啊! ...

可是  i  是不断变化的啊,为什么end=str.length()-i就执行一次了
回复 使用道具 举报
kerner 发表于 2014-12-1 23:58
C语言中的逗号操作符,不是变量声明定义时的逗号分隔符(int a, b;),在这里就是int start=0, end=str.leng ...

:L:L我知道int start=0,end=str.length()-i 这俩句都会执行,我想问的是end是怎么变化的,我只是一时没搞明白过来
回复 使用道具 举报
end=str.length()-i在的执行的总次数是外循环的次数
end++ 的执行总次数是外循环次数乘以内循环次数
回复 使用道具 举报
骑着乌龟去旅行 发表于 2014-12-2 18:42
可是  i  是不断变化的啊,为什么end=str.length()-i就执行一次了

首先for循环的格式是这样的:for(初始化条件;判断条件;控制条件)
                        {
                                循环体;
                        }

                        执行流程:
                                a:先执行初始化条件;
                                b:执行判断条件
                                c:根据判断条件的返回值:
                                        true:执行循环体。
                                        false:就结束循环。
                                d:最后执行控制条件。返回到b继续。
for循环定义的就是初使化表达式,它的作用就是给变量初使化的,所以只执行一次。
回复 使用道具 举报

end=str.length()-i明明减去的是i你怎么说是一呢???end的变化过程为:end=str.length()-i>>>end=str.length()-i+1>>>end=str.length()-i+2........end=str.length()+1,循环终止!
回复 使用道具 举报
我要是没猜错的话,这应该是求最长子串的问题。。。
回复 使用道具 举报
加个断电a~~~debug调试一下你就看到每次循环后的end值了
回复 使用道具 举报
学到了 。
回复 使用道具 举报
来学习,看评论
回复 使用道具 举报
顶顶顶顶
回复 使用道具 举报
看看大家的回答!很有收获!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马