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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

public class lianxi
{
        public static void main(String []args)
         {
                int sum=1;
                for(int i=1;i<=100;i++)
                 {
                        sum*=i;
                 }
                   System.out.println(sum);
         }                 
}
         
请问我程序那出错 了,每次都是0,复制别人的就是100内乘积!哎。。。

29 个回复

正序浏览
学习了!哈哈!
回复 使用道具 举报
哈哈哈哈哈
回复 使用道具 举报
话说,这个真的是溢出么?

俺看不是溢出,而是当阶乘到某个数时,正好到了0的位置,剩下的再往上乘就全是0了。这个数应该是34.

溢出的意思是转圈,不是0吧。
回复 使用道具 举报
那是因为最终数据超出了int类型的范围,造成的精度丢失
回复 使用道具 举报
学习了,以后还真的注意一些!
回复 使用道具 举报
alive 中级黑马 2014-7-24 23:30:19
25#
也是没想到 学习了!
回复 使用道具 举报
恩,来看看
回复 使用道具 举报
我们写程序会形成思维定势,一定以常量或者变量就是int,所以写程序要多思考。呵呵
回复 使用道具 举报
真的没看出来哪错了:L
回复 使用道具 举报
超出int的范围了。。另外这数已经很巨大了,别人做的都是100内的累加把
回复 使用道具 举报
star5603 发表于 2014-7-24 17:23
已经超出了int的上限了,溢出了。
你这用long型都没法装。只能用BIgInteger,如果单纯只是算结果的话。
...

谢谢。。。。。哈哈
回复 使用道具 举报
彬锐 发表于 2014-7-24 18:23
其实你可以自己调试一下看看  把输出语句放在for循环里面 看看每次得出的结果是多少  ...

哈哈,谢谢
回复 使用道具 举报
这是java特性造成的,当存储范围过大,装不下时会发生内存溢出,返回0
回复 使用道具 举报
溢出了int类型的范围是2*32
回复 使用道具 举报
100的阶乘数值的确很大,int装不下
回复 使用道具 举报
你考虑过int的感受么
回复 使用道具 举报
确实不好想到啊
回复 使用道具 举报
还真没注意到这些
回复 使用道具 举报
原来如此,学习了
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马