黑马程序员技术交流社区

标题: 取出一个字符串中字母出现的次数, 求救! [打印本页]

作者: 15917846944    时间: 2015-8-7 17:50
标题: 取出一个字符串中字母出现的次数, 求救!
//10、取出一个字符串中字母出现的次数。如:字符串
//:"abcdekka27qoq" ,输出格式为:a(2)b(1)k(2)...
//
//*char charAt(int index)               
//获取指定索引处出现的字符

public class Stringquchu {
        public static void main(String[] args){
                String str = "abcdekka27qoq";
                System.out.print(str.charAt(0));
                System.out.print("(2)");
                System.out.print(str.charAt(1));
                System.out.print("(3)");
                System.out.print(str.charAt(2));
                System.out.print("(2)");

                }
               
        }



作者: cemabenteng    时间: 2015-8-7 19:17
你这样做肯定不对啊,我和你说下思路吧:
A:将字符串转换为字符数组
B:创建map集合对象,character做键,Integer做值
C:拿字符去map中找对应的值,看返回的是否是null
           是:就储存,并把值记为1
           否:储存并把值++
D:将字符数组转换为字符串(StringBuffer)
作者: cemabenteng    时间: 2015-8-7 19:22
还是写一下代码吧,这个题不难,但是很重要
public class Test {
        public static void main(String[] args) {
                Scanner sc = new Scanner(System.in);
                System.out.println("请输入一个字符串:");
                String str = sc.nextLine();
                char[] ch = str.toCharArray();// 转换成字符数组
                TreeMap<Character, Integer> map = new TreeMap<>();// 创建一个TreeMap
                for (char c : ch) {// 遍历
                        Character key = c;
                        Integer value = map.get(c);
                        if (value == null) {// 判断,如果值为空,则向集合中添加(key,1),如果不为空则添加                     (key,value+1)
                                map.put(key, 1);
                        } else {
                                map.put(key, value + 1);
                        }
                }
                // 遍历集合
                Set<Map.Entry<Character, Integer>> set = map.entrySet();
                Iterator<Entry<Character, Integer>> it = set.iterator();
                while (it.hasNext()) {
                        Map.Entry<Character, Integer> me = it.next();
                        Character key = me.getKey();
                        Integer value = me.getValue();
                        System.out.println(key + "(" + value + ")");// 按规定的格式输出
                }
        }
}
还有一种Stringbuffer的append()方法,你自己做吧
作者: godboy001    时间: 2015-8-7 19:46
cemabenteng 发表于 2015-8-7 19:22
还是写一下代码吧,这个题不难,但是很重要
public class Test {
        public static void main(String[] args) { ...

为何我运行了说22行找不到符号呢?
作者: wode1311    时间: 2015-8-7 20:06
最简单的方法就是用Map集合做,
  1. public static void main(String[] args) {

  2. String str="abcdekka27qoq";

  3. TreeMap<Character,Integer> mp=new TreeMap<Character ,Integer>();
  4. char[] s=str.toCharArray();
  5. for(int i=0;i<s.length;i++){
  6. if(s[i]<'a'||s[i]>'z'){
  7. continue;
  8. }
  9. if(mp.containsKey(s[i])){
  10. mp.put(s[i],mp.get(s[i])+1 );
  11. }
  12. else{
  13. mp.put(s[i], 1);
  14. }
  15. }

  16. StringBuffer sb=new StringBuffer();
  17. Set<Character> st=mp.keySet();
  18. Iterator<Character> it=st.iterator();
  19. while(it.hasNext()){
  20. char c=it.next();
  21. int num=mp.get(c);
  22. sb.append(c+"("+num+")");
  23. }
  24. System.out.println(sb.toString());
复制代码


作者: 小燕小男_爱情    时间: 2015-8-7 21:32
我是来看回复的,
作者: cemabenteng    时间: 2015-8-7 22:34
godboy001 发表于 2015-8-7 19:46
为何我运行了说22行找不到符号呢?

可能有点小错误吧,我写完了就粘过来了,思路就是这样,你按着思路自己做一次
作者: cemabenteng    时间: 2015-8-7 22:36
cemabenteng 发表于 2015-8-7 22:34
可能有点小错误吧,我写完了就粘过来了,思路就是这样,你按着思路自己做一次 ...

告诉你一下学习的方法啊,不管什么题先去想思路,代码只是思路的体现,以后就业班点招或者公司面试都是思路很重要,代码永远敲不完,拿到一道题先把思路写出来,一定要写思路和注释,养成好习惯对你很有帮助
作者: godboy001    时间: 2015-8-8 07:52
cemabenteng 发表于 2015-8-7 22:36
告诉你一下学习的方法啊,不管什么题先去想思路,代码只是思路的体现,以后就业班点招或者公司面试都是思路 ...

主要我还太菜,得读程序看思路,尽量看能跑的程序,不然回头也不知道哪里出了问题
作者: godboy001    时间: 2015-8-8 08:01
哎,菜鸟遇到的问题总是很奇葩,没办法,基础差跑程序都跑不对........
作者: cemabenteng    时间: 2015-8-8 20:52
godboy001 发表于 2015-8-8 07:52
主要我还太菜,得读程序看思路,尽量看能跑的程序,不然回头也不知道哪里出了问题 ...

思路比代码重要的多, 实在不行就背思路
作者: godboy001    时间: 2015-8-9 21:38
cemabenteng 发表于 2015-8-8 20:52
思路比代码重要的多, 实在不行就背思路

恩,有道理
作者: zztierlie    时间: 2016-8-14 14:53
package com.itheima;

import java.util.Scanner;

/*取出一个字符串中字母出现的次数。如:字符串:"abcdekka27qoq" ,输出格式为:a(2)b(1)k(2)...*/
public class Test3 {

        public static void main(String[] args) {
                Scanner in = new Scanner(System.in);
                String s = in.nextLine();
                char[] a = s.toCharArray();
                int[] b = new int[60];
                for(int i=0; i<a.length; i++) {
                        if(a[i] >= 'a' && a[i] <= 'z') {//计算小写字母的个数
                                b[a[i]-'a']++;
                        }
                        else if(a[i] >= 'A' && a[i] <= 'Z') {//计算大写字母的个数
                                b[a[i]-'A'+30]++;
                        }
                }
                for(int i=0; i<b.length; i++) {
                        if(b[i] == 0)
                                continue;
                        if(i < 30) {//输出小写字母的个数
                                System.out.print((char)('a'+i) + "(" + b[i] + ")");
                        } else {//输出大写字母的个数
                                System.out.print((char)('A'+i-30) + "(" + b[i] + ")");
                        }
                }
                System.out.println();
        }

}
作者: 水月灬清影    时间: 2016-8-14 15:14
cemabenteng 发表于 2015-8-7 22:36
告诉你一下学习的方法啊,不管什么题先去想思路,代码只是思路的体现,以后就业班点招或者公司面试都是思路 ...

受教了,多谢!
作者: xw900322    时间: 2016-10-19 22:07
public static void main(String[] args) {
                String s = "abcdekka27qoq";
                char[] arr = s.toCharArray();
                TreeMap<Character, Integer> tm = new TreeMap<>();
                for (char c : arr) {
                        if (c >= 'a' && c <= 'z') {
                                if (tm.containsKey(c)) {
                                        tm.put(c, tm.get(c) + 1);
                                }else {
                                        tm.put(c, 1);
                                }
                        }
                }
                for (Character c : tm.keySet()) {
                        System.out.print(c + "(" + tm.get(c) + ")" );
                }
        }




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