我想编写一个java程序计算s=1+1/2+1/3+.......+1/n,直到最后一项小于0.12345;

public class A {
public static void main(String args[]){
int i = 2;
float a;
a=1/i;
float s=1;
for(i=2;a>0.12345;i++){
s=1+a;

}
System.out.println(" "+s);

}
}
看我的程序哪里有错 为什么总给我输出1.0 就是s的初值

1是整形i是整形,整形除整形得到的还是整形所以在
a=1/i;
的时候a=0了 所以你输出的就是1.0
想改很简单a=(float)1.0/i 即可
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-03-20
你看下 a的值是0 a =1/i 首先运行的是整型运算 1/i 结果是整形0 然后 赋予float a =0.0
第2个回答  2014-03-20
用 while(true){....}来解决
第3个回答  2014-03-20
public class A {
public static void main(String args[]){
float a;
float s=1;
ok:
for(float i=1;;i++){
a=1/i;
if(a<0.12345){
break ok;
}else{
s=s+a;
}

}
System.out.println(" "+s);
}
}
试试这个
第4个回答  2014-03-20
public class A {
public static void main(String args[]) {
int i = 2;
float a = 1;
float s = 1;
for (; a > 0.12345; i++) {
a = 1 / (float)i;
s += a;
System.out.println(a);
}
System.out.println(i + " " + s);
}
}本回答被提问者采纳