首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

for循环实现LastIndexOf 方法,该如何处理

2012-02-21 
for循环实现LastIndexOf 方法这是我写的实现LastIndexOf 方法的功能[codeJava][/code]public class LastI

for循环实现LastIndexOf 方法
这是我写的实现LastIndexOf 方法的功能[code=Java][/code]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是我定义的最后一次出现的位置,可是循环执行到倒数第二次就完了,问题出在哪了呢?


[解决办法]
cx8923ulfk;dji-abc321fckdu9a-832abc-894ofjdksau9-83791piufdsiaabcfodsa

你把最后一个abc前面的a去掉就知道是什么原因了。
[解决办法]
在你的基础上帮你做了小修改,你自己想想和你之前的做法有什么区别吧

Java code
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"));} } 

热点排行