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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

package com.itheima;

import java.util.*;

/**
* 取出一个字符串中字母出现的次数。如:字符串:"abcdekka27qoq" ,
* 输出格式为:a(2)b(1)k(2)...
* @author Administrator
*思路:把一个字符串变成字符集合,然后遍历字符集合,
*定义一个计数器,记住每个字符出现的次数。
*/

public class Test3 {
        public static void main(String[] args){
                setNum("abc");
               
        }
        public static void setNum(Object obj){
                String str=(String)obj;
                ArrayList al=new ArrayList();
                for(int i=0;i<str.length();i++){
                        al.add(str.charAt(i));
                }
                sop(al);
        //                Iterator it=al.iterator();
        //                while(it.hasNext())
        //                {
        //                        sop(it.next());
        //                }
                       
        }
        public static void sop(Object obj){
                System.out.println(obj);
        }
}
我写到这,实在想不起来下一步怎么做了,求指导

8 个回复

正序浏览
  1. import java.io.*;
  2. import java.util.*;

  3. /*
  4. * 3、 取出一个字符串中字母出现的次数。如:字符串:"abcdekka27qoq" ,
  5. * 输出格式为:a(2)b(1)k(2)...
  6. * */
  7. public class Test3
  8. {
  9.         public static void main(String[] args)
  10.         {
  11.                
  12.                 //建立字符输入流。
  13.                 BufferedReader br = null;
  14.                 char[] ch = null;
  15.                 ArrayList<Character> al = new ArrayList<Character>();
  16.                 try
  17.                 {
  18.                        
  19.                         //获取键盘录入。
  20.                         br = new BufferedReader(new InputStreamReader(System.in));
  21.                        
  22.                         //将键盘录入传入数组。
  23.                         ch = br.readLine().toCharArray();
  24.                        
  25.                         for(char c : ch)
  26.                         {
  27.                                 //遍历数组,过滤掉非字母的字符,将字母传入集合。
  28.                                 if(c>='A' && c<='Z' || c>='a' && c<='z')
  29.                                         al.add(c);
  30.                         }
  31.                        
  32.                         //遍历集合,记录字母、字母出现的次数并打印。
  33.                         for(int i=al.size()-1 ; 0<al.size() ; i=al.size()-1)
  34.                         {
  35.                                 System.out.print(al.get(i));
  36.                                 int count = 1;
  37.                                 for(int j=al.size()-2; j>=0 ; j--)
  38.                                 {                               
  39.                                         if(al.get(i)==al.get(j))
  40.                                         {
  41.                                                 count++;
  42.                                                 al.remove(j);
  43.                                                 i--;
  44.                                         }                               
  45.                                 }
  46.                                 al.remove(i);
  47.                                 System.out.print("("+count+")");
  48.                         }
  49.                 }
  50.                 catch(Exception e)
  51.                 {
  52.                         e.printStackTrace();
  53.                 }
  54.                 finally
  55.                 {
  56.                         try
  57.                         {
  58.                                 if(br!=null)
  59.                                         br.close();
  60.                         }
  61.                         catch(Exception e)
  62.                         {
  63.                                 e.printStackTrace();
  64.                         }
  65.                 }
  66.         }
  67. }
复制代码
回复 使用道具 举报
790324255a 发表于 2014-8-27 16:39
我入学考试就是这道题 不过这个不难可以利用map集合 把字符作为key,字符出现次数作为value ...

我再看看视频
回复 使用道具 举报
烟海 中级黑马 2014-8-27 17:14:05
7#
用hashmap ,存储键值对信息。。。。
字母当键。。因为键不能重复,然后出现的次数当值。。每出现一次,就++ 。。
回复 使用道具 举报
我入学考试就是这道题 不过这个不难可以利用map集合 把字符作为key,字符出现次数作为value
回复 使用道具 举报
曾小贤OL 发表于 2014-8-27 16:03
告诉下原理啊,我不太理解

每个字母出现的个数。明显是Key-Value啊  你想想看
回复 使用道具 举报
单线程xia 发表于 2014-8-27 15:37
用Map, 没要求排序HashMap TreeMap都可以

告诉下原理啊,我不太理解
回复 使用道具 举报
用Map, 没要求排序HashMap TreeMap都可以
回复 使用道具 举报
在线坐等啊。。。大神在哪啊?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马