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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© FINE 中级黑马   /  2015-1-2 20:11  /  952 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public static void main(String[] args){
                String str = "mynameiswangyunti";
                String st  = "iebgemefieiia";
                System.out.println(getsub(str,st));
        }
        public static String getsub(String str,String st){
                for(int x =0;x<st.length();x++){
                        for(int y =0,z=st.length()-x;z!=st.length()+1;y++,z++){
                                //为什么循环条件是z!=st.length()+1;????????
                                String s=st.substring(y,z);
                                if(str.contains(s))
                                        return s;
                        }
                }
                return "  ";

这是毕老师视频中的原题,题目是找出两个字符串中相同的字符串。为什么循环条件是z!=st.length()+1;????????中间我标出来了。求解答啊一下。

3 个回复

倒序浏览
包含头不包含尾  听说过没啊? public String substring(int beginIndex, int endIndex)
参数:
beginIndex - 起始索引(包括)。
endIndex - 结束索引(不包括)。
意思是y只能走到st.length() 然而切字符串的时候切到st.length() -1
回复 使用道具 举报
应该是为了不让循环到最后出现角标越界的异常吧!!
z=st.length()-x--------外循环里X每次自增1.到st.length()-1为止.
内循环中z++。。每次自增1.。。
z!=st.length()+1。。。。为了不让他自增超出角标范围
假设st.length()=10
z=10-X。。(10-1)
z!=10+1
回复 使用道具 举报
郑豪 发表于 2015-1-2 20:31
应该是为了不让循环到最后出现角标越界的异常吧!!
z=st.length()-x--------外循环里X每次自增1.到st.leng ...

不知道我这样理解是否正确。。不对请见谅
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马