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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑马伍仪华 中级黑马   /  2012-3-5 13:01  /  2768 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

有一个字符串ABCGoag-afg+++怎么把"-"    " a"   "+"的次数求出来,用集合的方式

3 个回复

倒序浏览
"_"的次数?你意思是字符串的次数?字符串有“次数”这个属性吗?你是要把那三个元素提取出来在放到一个集合中吗?
回复 使用道具 举报
怪了,为何指定用集合的方式呢?下面用 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 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. }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马