java程序问题:这个怎么总是报异常 哪里错了是?

publicclassA2_6{/***@paramargs*/publicstaticvoidmain(String[]args){//TODOAuto-generat... public class A2_6 {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
double sum=0;
for(int i=1;i<=1E8;i++){
int pro=1;
for(int j=1;j<=i;j++){
pro*=j;
}
double d=1/pro;
sum+=d;
}
}

}
展开
 我来答
chihysoa
2012-06-16
知道答主
回答量:9
采纳率:0%
帮助的人:14.4万
展开全部
int类型的范围是从-2^31到2^31-1,第二个for循环得到的最后结果是i!,而28!就超出范围了,然后得到的pro值会溢出,会出现负数,而64!由于溢出刚好=0,此时就出现pro=0分母为0的错误了。可以试试float或double类型,虽然不精确,但范围够大
大雅新科技有限公司
2024-11-19 广告
这方面更多更全面的信息其实可以找下大雅新。深圳市大雅新科技有限公司从事KVM延长器,DVI延长器,USB延长器,键盘鼠标延长器,双绞线视频传输器,VGA视频双绞线传输器,VGA延长器,VGA视频延长器,DVI KVM 切换器等,优质供应商,... 点击进入详情页
本回答由大雅新科技有限公司提供
lyjlksj
2012-06-16 · 超过13用户采纳过TA的回答
知道答主
回答量:29
采纳率:100%
帮助的人:27万
展开全部
具体报的什么异常,截图过来看看。。
追问
你运行下 就是报Arithmetic异常呀
追答
我运行过了,运行的异常是Exception in thread "main" java.lang.ArithmeticException: / by zero。这应该是说在运算过程中可能有除0错误,你的第一个for循环的范围设置有问题,把1E8改成10后就可以正常了。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
bdjyw_b
2012-06-16 · TA获得超过256个赞
知道小有建树答主
回答量:112
采纳率:0%
帮助的人:90.2万
展开全部
当i逐渐变大后,j也逐渐变大,pro的值也越来越大。当pro的值超出了int类型的范围时,即内存溢出,那么pro值就会被赋为0,所以出现除0的异常
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式