黑马程序员技术交流社区

标题: 从字符串中提取 [打印本页]

作者: 黑马伍仪华    时间: 2012-3-5 13:01
标题: 从字符串中提取
有一个字符串ABCGoag-afg+++怎么把"-"    " a"   "+"的次数求出来,用集合的方式
作者: 胡元    时间: 2012-3-5 13:39
"_"的次数?你意思是字符串的次数?字符串有“次数”这个属性吗?你是要把那三个元素提取出来在放到一个集合中吗?
作者: 黄秋    时间: 2012-3-6 07:13
怪了,为何指定用集合的方式呢?下面用 HashSet 写了写(感觉用HashMap更好):
  1. public static void main(String[] args) {
  2.                 HashSet<Character> hs = new HashSet<Character>();
  3.                 String s="ABCGoag-afg+++";
  4.                 int m=1,n=1,l=1;        //记录次数
  5.                 for(int i=0;i<s.length();i++){
  6.                         Character ch=s.charAt(i);
  7.                         if(hs.add(ch)==false){        //若是重复,则add失败
  8.                                 switch(ch) {
  9.                                         case '-' : m++; break;
  10.                                         case 'a' : n++; break;
  11.                                         case '+' : l++; break;
  12.                                 }                                       
  13.                         }
  14.                 }
  15.                 System.out.println("-: "+m+"  a:"+n+"  +:"+l);
  16.         }
复制代码

作者: 黄秋    时间: 2012-3-6 07:56
本帖最后由 黄秋 于 2012-3-6 08:05 编辑

用HashMap更靠谱:
  1. public static void main(String[] args) {
  2.         HashMap<Character,Integer> hm = new HashMap<Character,Integer>();
  3.         String s="ABCGoag-afg+++";
  4.         Character ch;
  5.         for(int i=0;i<s.length();i++){
  6.                 ch=s.charAt(i);
  7.                 if(hm.containsKey(ch))        //若是重复,则+1       
  8.                         hm.put(ch,hm.get(ch)+1);
  9.                 else
  10.                         hm.put(ch,1);
  11.         }
  12.         System.out.println("-: "+hm.get('-')+"  a:"+hm.get('a')+"  +:"+hm.get('+'));
  13. }
复制代码





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