Java循环运行无限

时间:2013-08-28 13:55:02

标签: java while-loop

我正在用java循环做一个阶乘问题,它询问1 + 1/2!+1/3!+ ... + 1 / n!,n是正数, 我正在使用“while”来制作它,但代码没有运行:

    public static void main(String[] args) {

    double sum=0,a=1;
    int n=Integer.parseInt(args[0]);
    while(n>0){

        a=a*n;
        sum=sum+1.0/a;
    }
    System.out.print(sum);

}

请帮助:)

4 个答案:

答案 0 :(得分:6)

while(n>0){
    a=a*n;
    sum=sum+1.0/a;
}

您何时更改n?你没有。条件将始终满足,您永远不会退出循环。考虑更改循环体中n的值。

 Iteration |   n
-----------+--------
     1     |   n      > 0 ? Yes
     2     |   n      > 0 ? Yes
     3     |   n      > 0 ? Yes
    ...    |
    ...    |
  Forever  |   n      > 0 ? Yes

答案 1 :(得分:1)

正如其他人所指出的那样,你的原始while循环永远不会结束,因为n的值永远不会改变,这意味着while条件总是为真(假设原始值大于零)。

这可能是你想要实现的目标吗?

public static void main(String[] args)
{
    double sum = 0, a = 1;
    int n = Integer.parseInt(args[0]);
    for ( int i = 1; i <= n; i++ )
    {
        a *= i;
        sum = sum + (1.0 / a);
    }
    System.out.print(sum);
}

答案 2 :(得分:0)

您的代码等于:

while(true){

    a=a*n;
    sum=sum+1.0/a;
}

您不能更改n值,n必须<=0break loop

答案 3 :(得分:0)

为什么不试试for循环让我们说

public static void main(String[] args) {

    double sum=0;
    int  n=Integer.parseInt(args[0]);
    for(double a=1;a<=n;a++){

        sum=sum+1.0/a;
    }
    System.out.print(sum);

}