JAVA流程控制语句程序问题

来源:百度知道 编辑:UC知道 时间:2024/05/28 06:43:19
程序代码如下:
public class Reciprocal
{
public static void main(String[] args)
{
double dSum=0;
long lMiddleSum=1;
for(int i=1;i<21;i++)
{
for(int j=1;j<=i;j++)
{
lMiddleSum*=j;
}
System.out.println(lMiddleSum);
dSum+=1/lMiddleSum;
}
System.out.println("1+1/2!+1/3!+...+1/20!"+ dSum);
}

}
程序运行以后结果出现了问题,该怎么修改???
在循环体中添加一条语句并编译源文件后再次运行,能正确运行,应该添加那一条一句??

问题一、lMiddleSum这个变量在每次算阶乘时都要初始化为1,所以放在外循环里面
问题二、1/lMiddleSum出来永远是整型的,用1.0/lMiddleSum

double dSum = 0;
long lMiddleSum;
for (int i = 1; i < 21; i++) {
lMiddleSum = 1;
for (int j = 1; j <= i; j++) {
lMiddleSum *= j;
}
dSum += 1.0 / lMiddleSum;
System.out.println(dSum);
}
System.out.println("1+1/2!+1/3!+...+1/20!" + dSum);

添加的话这样:
public class Reciprocal
{
public static void main(String[] args)
{
double dSum=0;
long lMiddleSum=1;
for(int i=1;i<21;i++)
{
lMiddleSum=1;//添加这个,但运算结果还是错,下面的除法要用1.0来除
for(int j=1;j<=i;j++)
{
lMiddleSum*=j;
}
System.out.println(lMiddleSum);
dSum+=1/lMiddleSum;
}
System.out.println("1+1/2!+1/3!+...+1/20!"+ dSum);
}

}

只用一个循环就行
public class Reciprocal {

public static void main(String[] args) {
double