黑马程序员技术交流社区
标题:
求解答!!!
[打印本页]
作者:
刘先斌
时间:
2014-3-27 18:08
标题:
求解答!!!
import java.util.*;
/*
获取该字符串中字母出现的次数
*/
public class TreeMapTest1
{
public static void main(String[] args)
{
charCount("abcabfs");
}
public static String charCount(String str)
{
char[] chs = str.toCharArray();
TreeMap<Character, Integer> tm = new TreeMap<Character, Integer>();
for (int x = 0; x < chs.length; x++)
{
if (chs[x] >= 'a' && chs[x] <= 'z' || chs[x] >= 'A'&& chs[x] <= 'Z')
{
continue;
}
Integer value = tm.get(chs);
if (value == null)
{
tm.put(chs[x], 1);
}
else
{
value = value + 1;
tm.put(chs[x], value);
}
}
// System.out.println(tm);
StringBuilder sb = new StringBuilder();
Set<Map.Entry<Character, Integer>> entryset = tm.entrySet();
for (Iterator<Map.Entry<Character, Integer>> it = entryset.iterator(); it
.hasNext();)
{
Map.Entry<Character, Integer> me = it.next();
Character ch = me.getKey();
Integer value = me.getValue();
sb.append(ch + "(" + value + ")");
}
return sb.toString();
}
}
——————————————————————————————————————————
运行后报异常如下:
Exception in thread "main" java.lang.ClassCastException: [C cannot be cast to java.lang.Comparable
at java.util.TreeMap.getEntry(TreeMap.java:325)
at java.util.TreeMap.get(TreeMap.java:255)
at exercise.exer.TreeMapTest1.chareCount(TreeMapTest1.java:21)
at exercise.exer.TreeMapTest1.main(TreeMapTest1.java:10)
请问这是哪里出错了???
谢谢帮忙解答!
作者:
苏伯亚
时间:
2014-3-27 18:47
你for循环里面写错了 主函数里面有没有写输出语句
这是我为你改的代码
import java.util.*;
/*
获取该字符串中字母出现的次数
*/
public class TreeMapTest1
{
public static void main(String[] args)
{
String s= charCount("abcabfs");
System.out.println(s);//要有输出语句
}
public static String charCount(String str)
{
char[] chs = str.toCharArray();
TreeMap<Character, Integer> tm = new TreeMap<Character, Integer>();
for (int x = 0; x < chs.length; x++)
{
if(! (chs[x] >= 'a' && chs[x] <= 'z' || chs[x] >= 'A'&& chs[x] <= 'Z'))
{
continue;
}
Integer value = tm.get(
chs[x]
);//
这里不能传进数组名 要具体的数据。不能传一个指针地址进去。
if (value == null)
{
tm.put(chs[x], 1);
}
else
{
value = value + 1;
tm.put(chs[x], value);
}
}
// System.out.println(tm);
StringBuilder sb = new StringBuilder();
Set<Map.Entry<Character, Integer>> entryset = tm.entrySet();
for (Iterator<Map.Entry<Character, Integer>> it = entryset.iterator(); it
.hasNext();)
{
Map.Entry<Character, Integer> me = it.next();
Character ch = me.getKey();
Integer value = me.getValue();
sb.append(ch + "(" + value + ")");
}
return sb.toString();
}
}
报的错误就是类型转换异常 所以你看看那里数据传错了 或是那里转换错了 就能发现具体错误地方了 。
希望能帮到你
作者:
郭黎明
时间:
2014-3-27 19:05
本帖最后由 郭黎明 于 2014-3-27 19:11 编辑
if (chs[x] >= 'a' && chs[x] <= 'z' || chs[x] >= 'A'&& chs[x] <= 'Z')
{
continue;
}
你的这个判断就停在里面,不会执行下面的与句,continue的意思是如果if语句满足,则继续判断if语句里面的内容,直到不满足为止,所以你这个地方用错了,不过在这个地方,你没必要进行这一判断 ,第二个细节楼上的兄弟已经给你指出了
作者:
╰青青子佩ˊゝ
时间:
2014-3-27 20:40
有两个地方要改:
public static void main(String[] args)
{
System.out.println(charCount("abcabfs"));
}
public static String charCount(String str)
{
char[] chs = str.toCharArray();
TreeMap<Character, Integer> tm = new TreeMap<Character, Integer>();
for (int x = 0; x < chs.length; x++)
{
//改点1:if()里的比大小富豪全反了,改成如下所示
if (chs[x] <= 'a' && chs[x] >= 'z' || chs[x] <= 'A'&& chs[x] >= 'Z')
{
continue;
}
//改点2:chs后面忘记加[x],改成如下所示
Integer value = tm.get(chs[x]);//这里你少了一个[x]
if (value == null)
{
tm.put(chs[x], 1);
}
else
{
value = value + 1;
tm.put(chs[x], value);
}
}
// System.out.println(tm);
StringBuilder sb = new StringBuilder();
Set<Map.Entry<Character, Integer>> entryset = tm.entrySet();
for (Iterator<Map.Entry<Character, Integer>> it = entryset.iterator() ;it.hasNext();)
{
Map.Entry<Character, Integer> me = it.next();
Character ch = me.getKey();
Integer value = me.getValue();
sb.append(ch + "(" + value + ")");
}
return sb.toString();
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2