A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 于潇 中级黑马   /  2012-5-9 08:02  /  2046 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. class StringTest2
  2. {
  3. public static int getSubCount(String str,String key)
  4. {
  5. int count = 0;
  6. int index = 0;

  7. while((index=str.indexOf(key))!=-1) //这里为什么是-1?
  8. {
  9. sop("str="+str);
  10. str = str.substring(index+key.length());

  11. count++;
  12. }
  13. return count;
  14. }
复制代码
一直想不通,不是说只要大于等于零就可以么?

4 个回复

倒序浏览
这里是在判断字符串str是否包含key这个字符串,str.indexOf(key)如果字符串参数作为一个子字符串在此对象中出现,则返回第一个这种子字符串的第一个字符的索引;如果它不作为一个子字符串出现,则返回 -1。
回复 使用道具 举报
方法Indexof返回第一次找到目标,如果没有找到目标就需要返回-1,指定位置继续往回找。
如:
String str1="cdesada"
str1.indexOf("cde");
回复 使用道具 举报
因为是API中指定的。如果找不到对应的元素,indexOf()方法就返回-1。你也可以反向思考:如果存在要找的字符,肯定不会返回-1,那么如果返回了-1,就说明不存在要找的字符。
回复 使用道具 举报
本帖最后由 万章云 于 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循环,用于输出数组中的值。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马