黑马程序员技术交流社区

标题: 准备申请面试,紧锣密鼓复习中,随性敲了两段代码,来论坛分(献)享(丑) [打印本页]

作者: noiary    时间: 2014-12-29 22:00
标题: 准备申请面试,紧锣密鼓复习中,随性敲了两段代码,来论坛分(献)享(丑)
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. }
复制代码

作者: AnElse    时间: 2014-12-29 22:04
加油!!
作者: Seejun    时间: 2014-12-29 22:06
兄弟加油
作者: 疯狂的学渣    时间: 2014-12-29 22:27
大家都加油吧,虽然时间可能会很赶。
作者: 清风笑烟雨    时间: 2014-12-29 23:28
加油。。。看看
作者: YAn.    时间: 2014-12-29 23:44
支持下  加油喔.....
作者: xiao飞    时间: 2014-12-31 10:09
楼主你上面方法一,if(str.charAt(i)== ch)  这好像错了把,我个人理解的是,str.charAt(i),返回的是字符,而且ch也是字符,字符比较不能用==来表示,应该用equals来表示把,个人理解,如果错误,请不要喷
作者: Piaoyu    时间: 2014-12-31 11:41
应该可以吧,如果相同返回true,继续执行,不行放回fasle,退出循环
作者: 菜鸟一号    时间: 2014-12-31 11:47
加油吧,小熊熊
作者: 王景阳    时间: 2014-12-31 13:49
努力加油   我还在努力的路上
作者: noiary    时间: 2014-12-31 14:12
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
菜鸟一号 发表于 2014-12-31 11:47
加油吧,小熊熊

{:3_54:}                                             
作者: abc784990536    时间: 2014-12-31 20:19
哈哈随意打!!
作者: 1094768121    时间: 2014-12-31 20:23
我支持你,因为我也想进黑马,加油
作者: I空空    时间: 2014-12-31 21:05
兄弟,一起加油努力
作者: lpf870826    时间: 2014-12-31 21:47
菜鸟一号 发表于 2014-12-31 11:47
加油吧,小熊熊

技术分怎么得的了。一号
作者: 只会金克斯    时间: 2014-12-31 22:47
为什么没有眼睛
作者: zcyemenye    时间: 2014-12-31 23:13
加油!!!:lol
作者: 任我行_2014    时间: 2014-12-31 23:25
原理上没有问题,先收藏啦,谢谢楼主分享,有空在验证一下
作者: Eagle    时间: 2014-12-31 23:41
菜鸟一号 发表于 2014-12-31 11:47
加油吧,小熊熊

一号,咱俩终于见面了。哈哈
作者: aa524500    时间: 2014-12-31 23:44
加油,大家一起努力啊。。
作者: zw937820438    时间: 2015-1-1 10:23
加油,学到手才是重要的
作者: 赵涛涛    时间: 2015-1-1 10:26
一般来说,遍历对比字符串,使用equals方法会比较方便,而且不容易出错。所以可以改进哦,方法一
作者: 清浅。。    时间: 2015-1-1 10:30
顶一下~加油
作者: Afridoce    时间: 2015-1-1 10:57

加油!!!
作者: Mydream524    时间: 2015-1-1 11:32
楼主加油。
作者: cgsilen    时间: 2015-1-1 12:05
顶楼主,加油
作者: 邓士林    时间: 2015-1-1 12:32
在说一个思路,用split()函数,直接看数组的长度,但是遇到一个问题
public static void main(String [] args)
        {
                String s1="aaaaaa";               
                int iCZ=CountChar(s1,"a");
                System.out.println(iCZ);
        }

        public static int CountChar(String sTarget,String ch)
        {
                String [] str=sTarget.split(ch);
                return str.length-1;
        }
此时返回的是-1,即字符串并没有查到并进行分割,为什么呢

作者: 小敏儿    时间: 2015-1-1 12:49
加油,我还有很长的一段路

作者: lovejjfg    时间: 2015-1-1 13:03
你能行的!!!
作者: djbcool    时间: 2015-1-1 13:05
支持你,一起努力!
作者: Death、    时间: 2015-1-1 13:40
报的哪一期?
作者: 菜鸟一号    时间: 2015-1-2 09:46
lpf870826 发表于 2014-12-31 21:47
技术分怎么得的了。一号

努力攒回来的
作者: 菜鸟一号    时间: 2015-1-2 09:47
Eagle 发表于 2014-12-31 23:41
一号,咱俩终于见面了。哈哈

牛B,这膜多技术分
作者: Eagle    时间: 2015-1-2 18:36
菜鸟一号 发表于 2015-1-2 09:47
牛B,这膜多技术分

你和一打黑马币。换成分估计比我还多了。。。
作者: pure_dust    时间: 2015-1-2 19:30
我也想考试啊!
作者: xingkong123    时间: 2015-1-2 23:02
加油。。。。。。
作者: 羽狼之翼    时间: 2015-1-2 23:45
刚进视频辅导班的小弟路过。学习了。
作者: 还在路上    时间: 2015-1-2 23:59
加油!加油




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2