黑马程序员技术交流社区
标题:
有段代码一直不明真相
[打印本页]
作者:
于潇
时间:
2012-5-9 08:02
标题:
有段代码一直不明真相
class StringTest2
{
public static int getSubCount(String str,String key)
{
int count = 0;
int index = 0;
while((index=str.indexOf(key))!=-1) //这里为什么是-1?
{
sop("str="+str);
str = str.substring(index+key.length());
count++;
}
return count;
}
复制代码
一直想不通,不是说只要大于等于零就可以么?
作者:
胡生蒙
时间:
2012-5-9 08:15
这里是在判断字符串str是否包含key这个字符串,str.indexOf(key)如果字符串参数作为一个子字符串在此对象中出现,则返回第一个这种子字符串的第一个字符的索引;如果它不作为一个子字符串出现,则返回 -1。
作者:
曹魁
时间:
2012-5-9 08:37
方法Indexof返回第一次找到目标,如果没有找到目标就需要返回-1,指定位置继续往回找。
如:
String str1="cdesada"
str1.indexOf("cde");
作者:
赵玮_Tom
时间:
2012-5-9 08:50
因为是API中指定的。如果找不到对应的元素,indexOf()方法就返回-1。你也可以反向思考:如果存在要找的字符,肯定不会返回-1,那么如果返回了-1,就说明不存在要找的字符。
作者:
彩虹
时间:
2012-5-9 09:17
本帖最后由 万章云 于 2012-5-9 10:50 编辑
while((index=str.indexOf(key))!=-1) //这里为什么是-1?
{
sop("str="+str);
str = str.substring(index+key.length());
}
查找数组时,如果没有找到与给定键值相同的元素则返回 -1; 这里的indexOf()方法就是实现查找数组的功能,只有找到了与给定
键值相同的元素,返回值才不可能为-1,循环才可以进行下去,才可以进行
str = str.substring(index+key.length())
;截子串的动作。
而大于等于零一般是针对for循环,用于输出数组中的值。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2