黑马程序员技术交流社区

标题: 帮忙看看为什么无法打印 [打印本页]

作者: 唐林渊    时间: 2012-3-25 17:41
标题: 帮忙看看为什么无法打印

//"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();                                          


}}

作者: 贠(yun)靖    时间: 2012-3-25 18:16
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 的  不符合返回  类型               


}}

作者: 鲍亚坤    时间: 2012-3-25 18:20
sb.toString();它将对象转换为其字符串表现形式。
public static String fun(String s)返回值是字符串。

作者: 唐林渊    时间: 2012-3-25 19:07
贠(yun)靖 发表于 2012-3-25 18:16
import java.util.*;
public class MapTest3 {

受教      
作者: 阿牛    时间: 2012-3-25 19:46
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后,编译通过。至于原因我不清楚,知道的提示下啊




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