黑马程序员技术交流社区

标题: 问什么会出现这种提示 [打印本页]

作者: 途中ms前进    时间: 2015-5-25 20:44
标题: 问什么会出现这种提示
本帖最后由 途中ms前进 于 2015-5-25 21:12 编辑

获取两个字符串中最大相同子串。
class StringTestDemo
{public static void main(String[] args)
        {String s1="abcdiopjgfdbn";
        String s2="abcdryuhfds";
        sop(getMaxSubSring(s1,s2));
        
        }



public static String getMaxSubSring(String s1,String s2)
{String max="",min="";
max=(s1.length()>s2.length())?s1:s2;
min=(max==s1)?s2:s1;
for(int x=0;x<min.length();x++)
        {for(int y=0,z=min.length()-x; z!=min.length()-1;y++,z++)
                {
                String temp=min.substring(y,z);
                if(max.contains(temp))
                return temp;
                }

                }
                return "";

                }
                public static void sop(String str)
        {
                System.out.println(str);
                }

}




Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 12
        at java.lang.String.substring(String.java:1951)
        at aaa.Test5.getMaxSubSring(Test5.java:20)
        at aaa.Test5.main(Test5.java:7)



作者: l598790586    时间: 2015-5-25 20:47
z=min.length()-x,这个越界了,当x = 0的时候,z = min.length().
作者: 存在感很差    时间: 2015-5-25 21:01
是z!=min.length()+1.
作者: 存在感很差    时间: 2015-5-25 21:21
你主要是没有理解substring(int start,int end);这个是从start到end-1,所以你的代码会使得start跑到end前面去,肯定会出错了。
作者: 凉仁日记    时间: 2015-5-25 21:25
z!=min.length()+1  应该是 这个
作者: 仅此一抹心醉    时间: 2015-5-25 21:29
看着好混乱啊 ,,为什么不用贴代码的功能 ,这样也让我们看着舒服点,更方便大家回答你的问题
作者: 907888614    时间: 2015-5-25 21:30
字符串数组角标越界
作者: 冷雨敲窗被未温    时间: 2015-5-25 21:40
水水更健康。




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