一个特别简单的问题

public static void main(String[] args) {
double i=1,s = 0;
for(;i<=29;i++)
{
s=s+i/(i+1);
}
s=s+1;
System .out.println(s);
如果把i改成int型为什么会没用 输出为0

s=s+i/(i+1);
如果i是int型,那么i / i+1 是整除,永远是0

如果i是int型,那么i / (i+1) 是整除,永远是0

你好 这是因为类型和运算符的关系,整数与整数,浮点型与浮点型,还有你要看清楚,是S + i/(i+1)

第一次循环的时候,i = 1,i + 1 = 2 , i / (i + 1) = 0.5,但是i改为了int型,所以结果不是0.5是0,再和为0的S相加,结果当然是0。
剩下的循环你可以自己推一下

因为每次的操作是i/i+1,所以i/i+1是永远小于1的,就是0.几。
而int型是整型。只会取整,就是小数点前面的整数就是0,所以每次都是0+0+。。+0.结果就是0了。

整型的运算都是舍弃小数点后面的东西的