黑马程序员技术交流社区

标题: 脑子已经晕了,求指出我的错误 [打印本页]

作者: 画饼    时间: 2013-5-23 13:56
标题: 脑子已经晕了,求指出我的错误
        /**
         * @param args
         */
        public static void main(String[] args) {
                // TODO Auto-generated method stub
                new Strcc().Strcaozuo("a0sjsssd");
                //System.out.println("你好");
               
        }
       
}
class Strcc{
        int i,y;
        int o ;
        Character Cr=null;
        Character BNr =null;
        HashMap Msp=new HashMap();
        Set Hst=null;
        public String Strcaozuo(String Str){
       
                for(i=0;i<(Str.length()+1);i++){
                        o=1;
                        for(y=i+1;y<Str.length();y++){
                                 Cr=Str.charAt(i);
                                 BNr=Str.charAt(y);
                                if(Cr.equals(BNr)){
                                        o++;
                                        Msp.put(Cr, o);
                                         Hst=Msp.keySet();
                                       
                                       
                                }
                        }        Iterator it =Hst.iterator();
                        while(it.hasNext()){
                                Object Isc =it.next();
                                System.out.println(Isc+"("+Msp.get(Isc)+")");
                        }
                       
                        }
               
                return Str;
               

        }
}

作者: 陈潜    时间: 2013-5-23 14:07
楼主 能不能给出需求。。需要达到什么目的?这个变量定义的,,,是很晕啊
作者: 画饼    时间: 2013-5-23 15:22
抱歉各位,菜鸟英文不好,变量随便定义的,目的就是统计字符串里面的每个字符出现的次数
作者: 徐启坤    时间: 2013-5-23 15:37
楼主,这种要求还是用TreeMap吧,你看看下面的程序
  1. import java.util.*;
  2. public class  treemap
  3. {
  4.         public static void main(String[] args)
  5.         {
  6.                 charCount("a0sjsssd");
  7.         }
  8.        
  9.         public static void charCount(String str)
  10.         {
  11.                 char[] chs = str.toCharArray();      //将字符串转换为字符数组

  12.                 TreeMap<Character,Integer> tm = new TreeMap<Character,Integer>();  //定义TreeMap存放结果

  13.                 for(int x=0; x<chs.length; x++)
  14.                 {
  15.                         if(!(chs[x]>='a' && chs[x]<='z' || chs[x]>='A' && chs[x]<='Z'))    //判断字符是否是字母
  16.                                 continue;
  17.                         Integer value = tm.get(chs[x]);    //获取字符对应的值,判断字符是不是已经存在
  18.                         if(value==null)
  19.                         {
  20.                                 tm.put(chs[x],1);      //如果不存在就将1存进去
  21.                         }
  22.                         else
  23.                         {
  24.                                 value = value + 1;     //如果存在即将值加1
  25.                                 tm.put(chs[x],value);
  26.                         }


  27.                 }
  28.                 System.out.println(tm); //简单的输出结果,你可以根据需要修改输出形式

  29.         }

  30. }
复制代码

作者: yanzhigang    时间: 2013-5-23 15:40
01.import java.util.Map;

02.public class  treemap

03.{

04.        public static void main(String[] args)

05.        {

06.                charCount("a0sjsssd");

07.        }

08.        

09.        public static void charCount(String str)

10.        {

11.                char[] chs = str.toCharArray();   

12.

13.                TreeMap<Character,Integer> tm = new TreeMap<Character,Integer>();  

14.

15.                for(int x=0; x<chs.length; x++)

16.                {

17.                        if(!(chs[x]>='a' && chs[x]<='z' || chs[x]>='A' && chs[x]<='Z'))   

18.                                continue;

19.                        Integer value = tm.get(chs[x]);   

20.                        if(value==null)

21.                        {

22.                                tm.put(chs[x],1);     

23.                        }

24.                        else

25.                        {

26.                                value = value + 1;   

27.                                tm.put(chs[x],value);

28.                        }

29.

30.

31.                }

32.                System.out.println(tm);

33.

34.        }

35.

36.}

作者: HM张博文    时间: 2013-5-23 15:47
楼主以后定义变量不要用o了,因为和0很像哦
作者: Super_Class    时间: 2013-5-23 16:06
Map集合是双列集合,没有继承Iterable。所以Map不能迭代。也就是它没有迭代器

想要得到Map集合中的元素:通常有两种方法:
方法1:|--keySet 方法 可以将所有键,将键变成Set集合
        使用方法:
  1. Set<Integer> keyset = map.keySet();
  2.                                 map.put(3, "zhangsan");
  3.                                 map.put(4, "lisi");
  4.                                 map.put(6, "zhousan");
  5.                                 map.put(8, "wuwuwu");    //键不能相同,否则会覆盖
  6.                                 for(Iterator<Integer> iterator = keyset.iterator();iterator.hasNext();){
  7.                                         String val = (String)map.get(iterator.next());   //这里iterator.next();得到的是key
  8.                                         System.out.println(val);
  9.                                 }
复制代码
方法2:|---entrySet方法
               该方法将键和值得映射关系作为对象存储到了Set集合中。


使用方法:
  1. Set<Map.Entry<Integer, String>> entryset = map.entrySet();
  2.                                 map.put(3, "zhangsan");
  3.                                 map.put(4, "lisi");
  4.                                 map.put(6, "zhousan");
  5.                                 map.put(8, "wuwuwu");
  6.                                 for(Iterator<Map.Entry<Integer, String>> iterator = entryset.iterator();iterator.hasNext();){
  7.                                         Map.Entry<Integer, String>  me = iterator.next();  //Set集合中存储的是一种映射关系 ,是对象
  8.                                         Integer key = me.getKey();                        //使用这个映射关系可以得到键 和 值
  9.                                         String value = me.getValue();
  10.                                         System.out.println(key+":"+value);
  11.                                 }
复制代码





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