日期:2014-05-20  浏览次数:20811 次

求解一个很简单的问题
String str="mingrikeji";
rs=str.lastIndexOf('i', 4);
System.out.println("从第5个字符后,字符i最后一次出现的位置是:"+rs);
此条执行结果为什么是1啊?
lastIndexOf(ch,startIndex)
不是按指定的搜索起点,搜索指定字符最后一次出现的位置吗? 
"mingrikeji"
第五个是r 
然后以r为起点 之后的为"ikeji"
i最后一次出现的位置怎么是1啊?


------解决方案--------------------
lz看看JDK中String.lastIndexOf(int, int)介绍就会明白了。重点红色部分
返回指定字符在此字符串中最后一次出现处的索引,从指定的索引处开始进行反向搜索。
------解决方案--------------------
返回指定字符在此字符串中最后一次出现处的索引,从指定的索引处开始进行反向搜索。
------解决方案--------------------
探讨

lz看看JDK中String.lastIndexOf(int, int)介绍就会明白了。重点红色部分
返回指定字符在此字符串中最后一次出现处的索引,从指定的索引处开始进行反向搜索。

------解决方案--------------------
1楼正解
Java code

////如果你想实现那种功能,自己写一个方法
public class TestLastIndexOf {
    public static void main(String[] args) {
    String str="mingrikeji";    
    int position =lastIndexOf( str ,'i', 4);
    System.out.println("从第5个字符后,字符i最后一次出现的位置是:"+ position);
    }    
    //返回:从str的第i个字符开始,字符c最后出现的位置
    public static int lastIndexOf(String str , char c , int i){
    if(str == null ||i<0 || i>=str.length()) return -1;
    for(int j=str.length()-1; j>=i;j--) {
        if(str.charAt(j) == c) return j;
    }    
    return -1;
    }
}
/*output:
从第5个字符后,字符i最后一次出现的位置是:9
*/

------解决方案--------------------
这个函数的名称叫的也不错呀。last最后的意思。
建议楼主看API