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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

14年的末班车,祝福准备好的人都赶上吧!

  1. package exercises;

  2. /**
  3. * 在字符串中查找字符出现的次数
  4. * @author always
  5. *
  6. */
  7. public class Test {

  8.         public static void main(String[] args) {
  9.                
  10.                 //定义字符串及要查找的字符
  11.                 String str = "abcdefabcdefabcdeffrf";
  12.                 char ch = 'f';
  13.                
  14.                 //定义次数count
  15.                 int count;
  16.                
  17.                 //两种方法查找
  18.                 // count = getCount_1(str, ch);
  19.                 count = getCount_2(str, ch);
  20.                
  21.                 //打印次数
  22.                 System.out.println(count);
  23.         }

  24.         /**
  25.          * 方法一,通过遍历每一个字符位置查找
  26.          * @param str
  27.          * @param ch
  28.          * @return
  29.          */
  30.         private static int getCount_1(String str, char ch) {
  31.                 int count = 0;
  32.                 for (int i = 0; i < str.length(); i++) {
  33.                         if (str.charAt(i) == ch)
  34.                                 count++;
  35.                 }
  36.                 return count;
  37.         }
  38.        
  39.         /**
  40.          * 方法二,通过indexOf出现的次数查找
  41.          * @param str
  42.          * @param ch
  43.          * @return
  44.          */
  45.         private static int getCount_2(String str, char ch) {
  46.                 int fromIndex = 0, count = 0;
  47.                 while ((fromIndex = str.indexOf(ch, fromIndex)) != -1) {
  48.                         fromIndex++;
  49.                         count++;
  50.                 }
  51.                 return count;
  52.         }


  53. }
复制代码

评分

参与人数 1黑马币 +3 收起 理由
杨佳名 + 3

查看全部评分

38 个回复

倒序浏览
加油!!
回复 使用道具 举报
兄弟加油
回复 使用道具 举报
大家都加油吧,虽然时间可能会很赶。
回复 使用道具 举报
加油。。。看看
回复 使用道具 举报
支持下  加油喔.....
回复 使用道具 举报
xiao飞 中级黑马 2014-12-31 10:09:47
7#
楼主你上面方法一,if(str.charAt(i)== ch)  这好像错了把,我个人理解的是,str.charAt(i),返回的是字符,而且ch也是字符,字符比较不能用==来表示,应该用equals来表示把,个人理解,如果错误,请不要喷
回复 使用道具 举报
Piaoyu 中级黑马 2014-12-31 11:41:34
8#
应该可以吧,如果相同返回true,继续执行,不行放回fasle,退出循环
回复 使用道具 举报
加油吧,小熊熊
回复 使用道具 举报
努力加油   我还在努力的路上
回复 使用道具 举报
noiary 高级黑马 2014-12-31 14:12:01
11#
xiao飞 发表于 2014-12-31 10:09
楼主你上面方法一,if(str.charAt(i)== ch)  这好像错了把,我个人理解的是,str.charAt(i),返回的是字符, ...

观察很细致,很棒,你说的也很对,字符串对比不能用==,只能使用equals方法。 只是harAt返回的是原始类型char,是字符,不是字符串,原始类型不是对象,没有equals方法。就像int i = 1; 我们不能用i.equals(1)  只能用 i == 1。  当然,我说的也不一定完全准确,即使我刚有试过把==改成equals验证结果编译失败。总之共同学习进步吧~ 加油
回复 使用道具 举报
noiary 高级黑马 2014-12-31 14:13:02
12#

{:3_54:}                                             
回复 使用道具 举报
哈哈随意打!!
回复 使用道具 举报
我支持你,因为我也想进黑马,加油
回复 使用道具 举报
兄弟,一起加油努力
回复 使用道具 举报

技术分怎么得的了。一号
回复 使用道具 举报
为什么没有眼睛
回复 使用道具 举报
加油!!!:lol
回复 使用道具 举报
原理上没有问题,先收藏啦,谢谢楼主分享,有空在验证一下
回复 使用道具 举报
Eagle 高级黑马 2014-12-31 23:41:29
20#

一号,咱俩终于见面了。哈哈
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马