黑马程序员技术交流社区
标题:
帮忙看看为什么无法打印
[打印本页]
作者:
唐林渊
时间:
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