java中编译没有错误但是不执行 不知道问题出在什么地方

worinixianren11 2012-10-22 09:05:20
package hubeiershi3;

import java.util.Iterator;
import java.util.Map;
import java.util.Random;
import java.util.Set;
import java.util.TreeMap;

public class RandomSortTest
{
public static void main(String[] args)
{
Map map = new TreeMap();
Random random = new Random();


for(int i = 0; i < 50; i++)
{
int number = random.nextInt(41) + 10;//随机生成50个【10,50】之间的整数

Integer in = new Integer(number);

if(map.get(in) == null)
{
map.put(in, new Integer[1]);
}
else
{
/*将在map中出现过的key值映射的value值取出拆箱为整数 (编译后报错就是这一行)*/
int value = ((Integer)(map.get(in))).intValue();

map.put(in, new Integer(value + 1)); /*将value值加1封装后放入map中*/
}
}
Set set = map.entrySet();
for(Iterator iter = set.iterator(); iter.hasNext();)
{
Map.Entry entry = (Map.Entry)iter.next();

Integer key = (Integer)entry.getKey();
Integer valu = (Integer)entry.getValue();

System.out.println(key + ":" +valu);
}
}
}
报错:Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Integer; cannot be cast to java.lang.Integer
at hubeiershi3.RandomSortTest.main(RandomSortTest.java:29)

另外想问一句 让eclipse显示行号的快捷键是什么?谢谢大神了,祝你身体健康!工作顺利!
...全文
502 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
nmyangym 2012-10-23
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]
new Integer[1]创建了长度为1的数组,内容是[null]
[/Quote]
Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Integer; cannot be cast to java.lang.Integer
提示的是把不能把Integer数组转成Integer.
老紫竹 2012-10-23
  • 打赏
  • 举报
回复
呵呵,果然有些粗心。
huntor 2012-10-22
  • 打赏
  • 举报
回复
new Integer[1]创建了长度为1的数组,内容是[null]
worinixianren11 2012-10-22
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]
引用 4 楼 的回复:

这句话的意思是说判断map中in所映射的value存不存在,如果不存在就将in作为键名,1的封装类作为键值放入到map中


我是说你创建封装类new Integer[1],有中括号这么语法么。
[/Quote]
谢谢你啊!问题就出在这里了,我改了就好!编译器都没有发现这个问题,居然被你发现了额!太感谢你呢!看来我太不够仔细了!
yichunfengcarry 2012-10-22
  • 打赏
  • 举报
回复
ctrl + f10
ClassCastException是JVM在检测到两个范例间转换不兼容时激发的运行时非常。intValue是输出int数据。
重学编程 2012-10-22
  • 打赏
  • 举报
回复
你要new对象也是小括号啊,把小括号去掉应该就可以了
名字到底多长 2012-10-22
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

这句话的意思是说判断map中in所映射的value存不存在,如果不存在就将in作为键名,1的封装类作为键值放入到map中
[/Quote]

我是说你创建封装类new Integer[1],有中括号这么语法么。
重学编程 2012-10-22
  • 打赏
  • 举报
回复
类型转换错误
右击Eclipse-》show line num可以打一行号
worinixianren11 2012-10-22
  • 打赏
  • 举报
回复
这句话的意思是说判断map中in所映射的value存不存在,如果不存在就将in作为键名,1的封装类作为键值放入到map中
名字到底多长 2012-10-22
  • 打赏
  • 举报
回复
if(map.get(in) == null)
{
map.put(in, new Integer[1]);
}

这里中括号是什么意思。。。。
aimsgmiss 2012-10-22
  • 打赏
  • 举报
回复
帮你顶哈,我也没看懂,反正就是不能转换为Integer
worinixianren11 2012-10-22
  • 打赏
  • 举报
回复
大神们!很急呀!我纠结了这个问题一天了!一直想自己想出来,但是实在是想不出来了!

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧