java里面求碰到一个题,请教大家为什么输出来是0
publicclasssum{publicstaticvoidmain(String[]args){intsum=0;for(inti=1;i<=49;i++){sum=...
public class sum {
public static void main(String[] args){
int sum=0;
for(int i=1;i<=49;i++){
sum=sum+(2*i-1)/(2*i+1);
if(i==49)
System.out.print(sum);
}
}
} 展开
public static void main(String[] args){
int sum=0;
for(int i=1;i<=49;i++){
sum=sum+(2*i-1)/(2*i+1);
if(i==49)
System.out.print(sum);
}
}
} 展开
5个回答
展开全部
sum为整型(int),整型的数做除法,结果还是整型,于是结果就是省略小数点后面小数的整数,所以i无论为范围内何值,2*i - 1 / 2* i + 1 永远小于 1 ,则其整型结果都为0
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
原因在于你定义的int类型
2*i - 1 始终小于2*i+1
所以2*i-1/2*i+1 始终为0
所以你的sum一直在加0,结果自然为0
2*i - 1 始终小于2*i+1
所以2*i-1/2*i+1 始终为0
所以你的sum一直在加0,结果自然为0
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个其实是这样的,不论i等于多少,每次循环时,(2*i-1)/(2*i+1)都小于1大于0吧,而你将sum定义为int,即是说整形,取整后每次都等与0,不论i最大为多少,n个0相加不是始终为0吗?你将sum改为float,结果肯定不会是0了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
因为你(2*i-1)/(2*i+1)中 前面的值永远都小于后面的值 你又进行的是Int型的除法,答案只有0;还有什么不懂的可以问
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
很简单 2*49 -1 / 2*49+1 =多少 sum最后就等于这个值
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询