问题出在while循环的判断顺序有误,应先判断下标的范围,再比较数值
修改后的代码为:
while (((i + icount) < s.length())
&& ((j + icount) < p.length())
&& (s.charAt(i + icount) == p.charAt(j + icount))) {
icount++;
}
不奇怪啊
你看这个 s.charAt(i+icount)==p.charAt(j+icount)
当i或j是s或p的最后一个字符时,再加上icount,不是超过他的字符长度拉,不就抱错了。
你如果想让改,你说一说int flag; int sp=0,icount=0; int cp=0 这几个函数干吗的。
我还以为你要比较句子意思是否差不多呢
不过你这能叫句子相似度么!
逻辑顺序有误,比较字符串之前应该先取到字符串,即先判断所取目标字符串是否超出范围。
((i+icount)