class StringTools
{
public static void getMaxstr(String str1,String str2)
{
for(int m=str2.length();m>=1;m--)
{
for(int i=0,j=i+m-1;j<=str2.length()-1 && i<=j ;i++)
{
if(str1.contains(str2.substring(i,j+1)))
{
System.out.println(str2.substring(i,j+1));//此处应该有问题
}
}
}
}
}
class StringDemo
{
public static void main(String[] args)
{
StringTools.getMaxstr("xacaca","dadaacac");
}
}
你这个程序有两个错误,你在单步执行的时候,你会发现,你 i 值会存在 > j值的时候,这时str2.substring(i,j+1)方法就会抛出异常,还有一个错误就是有时你的程序的i值会>字符串的长度,这时那个方法也会抛出异常;
解决办法就是在For条件中加上一个判断语句把 for(int i=0,j=i+m-1;j<=str2.length()-1;i++)改成 for(int i=0,j=i+m-1;j<=str2.length()-1 && i<=j ;i++)这样就排除了那两种错误
程序出错的最好办法是调试下,自己跟踪数据看下,大部分问题都可以解决。
希望对你有用 |