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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 唐林渊 黑马帝   /  2012-3-25 17:41  /  1921 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


//"shfwsfvsnwnsnie"获取该字符串中的字母出现的次数


这是毕老师的题  我自己写了一遍,就是打印不出来  帮忙看看吧,还有就是最后为什么要toString   ?  直接sb不可以吗?

public class MapTest3 {

        public static void main(String[] args) {
                String s=fun("shfwsfvsnwnsnie");
                System.out.println(s);
               
        }
        public static String fun(String s){
                char[] ch=s.toCharArray();
                TreeMap<Character,Integer>  tree= new TreeMap<Character,Integer>();
               
                for(int x=0;x<ch.length;x++){
                        if(ch[x]>='a'&&ch[x]<='z' || ch[x]>='A'&&ch[x]<='Z')
                                continue;
                        Integer value=tree.get(ch[x]);
                        if(value==null){
                                tree.put(ch[x], 1);
                        }else{
                                value=value+1;
                                tree.put(ch[x], value);
                        }}
                        StringBuilder sb=new StringBuilder();
                        Set<Map.Entry<Character, Integer>> entry= tree.entrySet();
                       
                        Iterator<Map.Entry<Character, Integer>> it=entry.iterator();
                        while(it.hasNext()){
                                Map.Entry<Character, Integer> me=it.next();
                                Character key=me.getKey();
                                Integer value1=me.getValue();
                                sb.append(key+"("+value1+")");
                        }
                       
                       
               
                return sb.toString();                                          


}}

评分

参与人数 1技术分 +1 收起 理由
房宝彬 + 1

查看全部评分

4 个回复

倒序浏览
import java.util.*;
public class MapTest3 {

        public static void main(String[] args) {
                String s=fun("shfwsfvsnwnsnie");
                System.out.println(s);
               
        }
        public static String fun(String s){
                char[] ch=s.toCharArray();
                TreeMap<Character,Integer>  tree= new TreeMap<Character,Integer>();
               
                for(int x=0;x<ch.length;x++){
                        if(ch[x]<='a'&&ch[x]>='z' || ch[x]<='A'&&ch[x]>='Z')  你这判断反了   这是要限制 字符是26个大写字母和小写字母  其他字符是不行的
                                continue;                                                 而你的条件 恰恰相反  是26个大写和小写字母不满足   以外的字符才满足  
                        Integer value=tree.get(ch[x]);
                        if(value==null){
                                tree.put(ch[x], 1);
                        }else{
                                value=value+1;
                                tree.put(ch[x], value);
                        }}
                        StringBuilder sb=new StringBuilder();
                        Set<Map.Entry<Character, Integer>> entry= tree.entrySet();
                        
                        Iterator<Map.Entry<Character, Integer>> it=entry.iterator();
                        while(it.hasNext()){
                                Map.Entry<Character, Integer> me=it.next();
                                Character key=me.getKey();
                                Integer value1=me.getValue();
                                sb.append(key+"("+value1+")");
                        }
                        
                        

               
                return sb.toString();      因为fun  的返回类型是String的         而你在sb容器  存放的键值对 是character 和   Integer 的  不符合返回  类型               


}}

评分

参与人数 1技术分 +1 收起 理由
房宝彬 + 1

查看全部评分

回复 使用道具 举报
sb.toString();它将对象转换为其字符串表现形式。
public static String fun(String s)返回值是字符串。

评分

参与人数 1技术分 +1 收起 理由
房宝彬 + 1

查看全部评分

回复 使用道具 举报
贠(yun)靖 发表于 2012-3-25 18:16
import java.util.*;
public class MapTest3 {

受教      
回复 使用道具 举报
import java.util.*;
public class MapTest3 {

        public static void main(String[] args) {
                String s=fun("shfwsfvsnwnsnie");
                System.out.println(s);
               
        }
        public static String fun(String s){
                char[] ch=s.toCharArray();
                TreeMap<Character,Integer>  tree= new TreeMap<Character,Integer>();
               
                for(int x=0;x<ch.length;x++)
                                        {
                        if(ch[x]>='a'&&ch[x]<='z' || ch[x]>='A'&&ch[x]<='Z')
                               // continue;
                                                { Integer value=tree.get(ch[x]);
                        if(value==null)
                                                        {
                                tree.put(ch[x], 1);
                                                         }
                                                else
                                                        {
                                value=value+1;
                                tree.put(ch[x], value);
                                                        }
                                                }
                                        }
                        StringBuilder sb=new StringBuilder();
                        Set<Map.Entry<Character, Integer>> entry= tree.entrySet();
                        
                        Iterator<Map.Entry<Character, Integer>> it=entry.iterator();
                        while(it.hasNext()){
                                Map.Entry<Character, Integer> me=it.next();
                                Character key=me.getKey();
                                Integer value1=me.getValue();
                                sb.append(key+"("+value1+")");
                                                                        


                        }
                        
                        
               
                return sb.toString();                                          


}}
哥们,以上是我就你的代码更正后的,测试通过。
问题有:1,忘写import java.util.*;了吧 。2,如2楼所言,把continue语句删掉即可。3, 把public class MapTest3 前的public删掉,因为编译时
2.java:2: 错误: 类MapTest3是公共的, 应在名为 MapTest3.java 的文件中声明
public class MapTest3 {
        ^
报错,去掉public后,编译通过。至于原因我不清楚,知道的提示下啊

评分

参与人数 1技术分 +1 收起 理由
房宝彬 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马