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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 习惯就好 中级黑马   /  2015-3-1 23:00  /  1148 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 习惯就好 于 2015-3-2 09:29 编辑
  1. </blockquote></div><div class="blockcode"><blockquote>class  CountTest
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 String s="Hllello Worlld!";
  6.                 sop("s="+s);
  7.         
  8.                 sop("count="+count(s,"ll"));
  9.         }

  10.         public static int count(String s,String key)
  11.         {
  12.                 int count=0;//定义计数器
  13.                 int index=0;//定义获取角标变量
  14.                 while((index=s.indexOf(key,index))!=-1)//如果包含,则继续
  15.                 {
  16.                         index=index+key.length();//从找到的子串位置后一位开始获取(为什么要从后一位开始???)
  17.                         count++;
  18.                 }
  19.                 return count;
  20.         }

  21.         private static  void sop(Object obj)//为什么这个地方要传入一个Object类型的对象?按照上面类的调用,不应该是String类型的吗?
  22.         {
  23.                 System.out.println(obj);
  24.         }

  25. }
复制代码

我的问题在上面注释的部分做了标记,希望大神们解答一下疑惑!!!

评分

参与人数 1技术分 +1 收起 理由
万合天宜 + 1 加油

查看全部评分

2 个回复

倒序浏览
希望能帮到你...
  1. package lianxi;

  2. public class  CountTest
  3. {
  4.         public static void main(String[] args)
  5.         {
  6.                 String s="Hllello Worlld!";
  7.                 sop("s="+s);
  8.         
  9.                 sop("count="+count(s,"ll"));
  10.         }

  11.         public static int count(String s,String key)
  12.         {
  13.                 int count=0;//定义计数器
  14.                 int index=0;//定义获取角标变量
  15.                 while((index=s.indexOf(key,index))!=-1)//如果包含,则继续
  16.                 {
  17.                         index=index+key.length();//从找到的子串位置后一位开始获取(为什么要从后一位开始???)
  18.                         /*
  19.                          * 这里并不是从找到的子串的后一位开始,而是把找到的位置index往后移 key.length()位,
  20.                          * 是从后key.length()位开始查找的,因为角标index到index+key.length()之间正好是要
  21.                          * 查找的子串key.
  22.                          *
  23.                          */
  24.                         
  25.                         count++;
  26.                 }
  27.                 return count;
  28.         }

  29.         private static  void sop(Object obj)//为什么这个地方要传入一个Object类型的对象?按照上面类的调用,不应该是String类型的吗?
  30.         {
  31.                 /*
  32.                  * 这里传入String类在这个例子里是可以的,传入Object类,其实也是调用Object的toString()方法
  33.                  * 之后再打印输出,选择传入Object类是因为他是所有类的父类,这样任何类都可以调用函数sop()进
  34.                  * 行打印。比如说你这里如果选择String类,直接打印sop(count)就会报错说类型不匹配,
  35.                  * 因为count是int型,而如果这里选择Object类时不会报错,因为所有的对象都是Object的子类,
  36.                  * 就都可以打印,增强了函数的通用性,后面写这个函数时都会选择Object类。
  37.                  */
  38.                 System.out.println(obj);
  39.         }

  40. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
万合天宜 + 1 很给力!

查看全部评分

回复 使用道具 举报
huangchunwei 来自手机 中级黑马 2015-3-2 09:05:47
藤椅
楼上棒棒哒。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马