for循环实现LastIndexOf 方法

aaaa8215 2011-07-26 09:23:22
这是我写的实现LastIndexOf 方法的功能
public class LastIndexOf
{
public static void main(String[] args)
{
String srcText = "cx8923ulfk;dji-abc321fckdu9a-832abc-894ofjdksau9-83791piufdsiaabcfodsa";
String str = "abc";
int hits = 0;
int idx = 0 ;
for( int i = 0; i < srcText.length(); i ++)
{
if(srcText.charAt(i) == str.charAt(hits))
{
hits += 1;
if( hits == str.length())
{
idx = i - str.length() + 1;
hits = 0;
}
}
else
hits = 0;

}
System.out.println(idx);
System.out.println(srcText.lastIndexOf("abc"));
}
} idx是我定义的最后一次出现的位置,可是循环执行到倒数第二次就完了,问题出在哪了呢?
...全文
231 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
aaaa8215 2011-07-26
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 liuyuhua0066 的回复:]
cx8923ulfk;dji-abc321fckdu9a-832abc-894ofjdksau9-83791piufdsiaabcfodsa

你把最后一个abc前面的a去掉就知道是什么原因了。
[/Quote]en 。问题是在这里了
qybao 2011-07-26
  • 打赏
  • 举报
回复
在你的基础上帮你做了小修改,你自己想想和你之前的做法有什么区别吧
public class LastIndexOf
{
public static void main(String[] args)
{
String srcText = "cx8923ulfk;dji-abc321fckdu9a-832abc-894ofjdksau9-83791piufdsiaabcfodsa";
String str = "abc";
int hits = 0;
int idx = 0 ;
for( int i = 0; i < srcText.length(); i ++)
{
if(srcText.charAt(i) == str.charAt(0))
{ //第一个字符相同
boolean match = false;
for (int j=1; j<str.length() && i+j<srcText.length(); j++) { //继续比较后续字符
if (srcText.charAt(i+j) != str.charAt(j)) {break;}
match = (j==str.length()-1); //后续字符全部一致
}
if (match) {idx=i;} //则获取该位置
}

}
System.out.println(idx);
System.out.println(srcText.lastIndexOf("abc"));
}
}
liuyuhua0066 2011-07-26
  • 打赏
  • 举报
回复
cx8923ulfk;dji-abc321fckdu9a-832abc-894ofjdksau9-83791piufdsiaabcfodsa

你把最后一个abc前面的a去掉就知道是什么原因了。

62,634

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧