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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© demown 中级黑马   /  2014-4-26 17:16  /  1011 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 demown 于 2014-4-27 11:11 编辑
  1. package fuxilianxi;
  2. import java.util.*;
  3. public class MapEntry {
  4. public static void main(String[] ages)
  5. {
  6.   
  7.   String s=charCount("aaaaabbdsdfadsfasg");
  8.   System.out.println(s);
  9. }
  10. public static String charCount(String str)
  11. {
  12.   char[] cs = str.toCharArray();//把自字符串转换成数组;
  13.   TreeMap<Character,Integer> ts = new TreeMap<Character,Integer>();//定义一个集合因为具备顺序又是成对出现的所以就用TreeMap集合。
  14.   
  15.   for(int x=0;x<=cs.length;x++)//遍历数组;
  16.   {  Integer value = ts.get(cs[x]);//定义一个int包装类型的键。
  17.    if(value ==null){ts.put(cs[x],1);}//如果键放入集合时候没有的就返还null,则将键和第一次出现的一次的值存入集合;
  18.    else{value+=1;ts.put(cs[x],value);}//如果里面有该键那将值增加一次 ,在次将键和值一起放入集合中。
  19.   }
  20.   //System.out.println(ts);//打印一次看看结果。
  21.   StringBuffer sb= new StringBuffer();//定义一个容器,为了将其编有顺序的字符串。
  22.   Set<Map.Entry<Character,Integer>> entrySet = ts.entrySet(); //讲集合中的键值对反射到set集合中。
  23.   Iterator<Map.Entry<Character,Integer>> it= entrySet.iterator();//定义一个迭代器取出 集合中的元素。
  24.   while(it.hasNext())//进行迭代。
  25.   {
  26.    Map.Entry<Character,Integer> i = it.next();//讲取出的来的元素转换成 Map.Entry类型的分别得到其中的键和值。
  27.    Character ch = i.getKey();
  28.    Integer   in = i.getValue();
  29.    sb.append(ch+"("+in+")");//将键和值都添加到容器里面
  30.   }
  31.   
  32.   return sb.toString();//返回容器里面的内容字符串形式。
  33.   
  34. }
  35. }
复制代码


  说是17行错了不知道哪错了大神看看

点评

主意哈排版,把代码放在代码块中,排版后给你分,  发表于 2014-4-26 21:30

5 个回复

倒序浏览
java.lang.ArrayIndexOutOfBoundsException
回复 使用道具 举报
你看看我这里用红色写的代码跟你的有什么区别。编译的时候报的异常是数组越界,我不相信这个你不会处理吧!
import java.io.*;
import java.util.*;
import java.text.SimpleDateFormat;
import java.util.*;
public class Test1 {
        public static void main(String[] ages)
        {
                String s = charCount("aaaaabbdsdfadsfasg");
                System.out.println(s);
        }
        public static String charCount(String str)
        {
                char[] cs = str.toCharArray();//把自字符串转换成字符数组;
                TreeMap<Character,Integer> ts = new TreeMap<Character,Integer>();//定义一个集合因为具备顺序又是成对出现的所以就用TreeMap集合。
         
                for(int x = 0; x < cs.length; x++)//遍历数组;
                {
                        Integer value = ts.get(cs[x]);//定义一个int包装类型的键。
                        if(value == null){
                                ts.put(cs[x],1);
                        }//如果键放入集合时候没有的就返还null,则将键和第一次出现的一次的值存入集合;
                        else{
                                value += 1;
                                ts.put(cs[x],value);
                        }//如果里面有该键那将值增加一次 ,在次将键和值一起放入集合中。
                }
                //System.out.println(ts);//打印一次看看结果。
                StringBuffer sb = new StringBuffer();//定义一个容器,为了将其编有顺序的字符串。
                Set<Map.Entry<Character,Integer>> entrySet = ts.entrySet(); //讲集合中的键值对反射到set集合中。
                Iterator<Map.Entry<Character,Integer>> it = entrySet.iterator();//定义一个迭代器取出 集合中的元素。
                while(it.hasNext())//进行迭代。
                {
                        Map.Entry<Character,Integer> i = it.next();//讲取出的来的元素转换成 Map.Entry类型的分别得到其中的键和值。
                        Character ch = i.getKey();
                        Integer   in = i.getValue();
                        sb.append(ch+"("+in+")");//将键和值都添加到容器里面
                }
         
                return sb.toString();//返回容器里面的内容字符串形式。
         
        }
}





回复 使用道具 举报
你把编译器报 的英文发出来
我帮你翻译下:lol
回复 使用道具 举报
看看我写的程序
  1. /*
  2. "sdfgzxcvasdfxcvdf"获取该字符中的字母出现的次数

  3. 希望打印结果:a(1)c(2)..


  4. 第一次用a字母作为键去找集合,那么集合中没有a这个键,所以也没有对应的次数。
  5. 返回null

  6. 如果是null  则将a字母和1存入集合

  7. 如果制定的键已经存在,说明有对应次数,就将对应的次数取出,并自增后在从新
  8. 存入集合

  9. 思路:
  10. 1、将字符串转换成字符数组,因为要对每一个字母进行操作
  11. 2、定义一个map集合,因为打印结果的字母有顺序。
  12. 3、遍历这个字符数组,
  13.         将每一个字符作为键去查map集合
  14.         如果返回null,就将该字符和1存入到map集合中。
  15.         如果返回不是null,说明该字母子啊map集合已经存在就获取对应次数并进行自增,
  16.         然后将该字母和自增后的次数存入到map集合中,,覆盖调用原来所对应的键,

  17. 4、将map集合中的数据变成制定的字符串形式返回
  18. */

  19. import java.util.*;

  20. class  MapDemo2
  21. {
  22.         public static void main(String[] args)
  23.         {
  24.                 System.out.println(charCount("sdfgzxcvasdfxcvdf"));
  25.                 //System.out.println("Hello World!");
  26.         }
  27.         public static String charCount(String str)
  28.         {
  29.                 char[] chs=str.toCharArray();
  30.                 TreeMap<Character,Integer>tm =new TreeMap<Character,Integer>();//泛型中接收的都是引用数据类型 ,存入基本类型的包装类
  31.                
  32.                 int count=0;
  33.                 for(int x=0;x<chs.length;x++)
  34.                 {
  35.                         if(chs[x]<='a'&&chs[x]>='z'||chs[x]<='A'&&chs[x]>='Z')
  36.                                 continue;
  37.                         Integer value=tm.get(chs[x]);
  38.                         if(value!=null)
  39.                                 count=value;
  40.                         count++;
  41.                         tm.put(chs[x],count);
  42.                         count=0;
  43.                         //if(value==null)
  44.                         //{
  45.                                 //tm.put(chs[x],1);
  46.                         //}
  47.                         //else
  48.                         //{
  49.                                 //value=value+1;
  50.                                 //tm.put(chs[x],value);
  51.                         //}
  52.                 }
  53.                 System.out.println(tm);

  54.                 StringBuilder sb=new StringBuilder();
  55.                 Set<Map.Entry<Character,Integer>> entrySet=tm.entrySet();
  56.                 Iterator<Map.Entry<Character,Integer>> it=entrySet.iterator();

  57.                 while(it.hasNext())
  58.                 {
  59.                         Map.Entry<Character,Integer> me=it.next();
  60.                         Character ch=me.getKey();
  61.                         Integer value=me.getValue();
  62.                         sb.append(ch+"("+value+")");
  63.                 }
  64.                 return sb.toString();       
  65.         }
  66. }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马