java中我想求一个数字的阶乘,可是运行结果一直是0,请帮我看看错在哪里

import java.util.Scanner;
public class e {

public static void main(String[] args) {
int i=0;
double sum=1.0;

Scanner s=new Scanner(System.in);
System.out.println("请输入");
int j=s.nextInt();

for(;i<j;i++);
j=j*(j-i);
System.out.println( "jieguo"+j);

}

}
我是新手...T.T

第1个回答  2014-03-09

这样改:

        int sum = 1;

        Scanner s=new Scanner(System.in);

        System.out.println("请输入");

        int j=s.nextInt();

        System.out.println(j);

        

        for(int i=1;i<=j;i++)

        {

            sum *=i;

        }

        System.out.println( "jieguo"+sum);

你错是因为:

    for();

    j已经定义在for循环了,循环体内不能再用j去接相乘的结果,否则j只会不停的增大,知道内存溢出

本回答被提问者采纳
第2个回答  2014-03-09
int j=s.nextInt(); //第一句

j=j*(j-i); //第二句。问题处在这个上面。

假如你输入了10.那么在执行 第二句的时候,j变成了几?? j = 10*(10-1)。也就是说 90
那么第二次运行后,j又是多少?? j = 90*(90-1),天哪。真可怕。已经错了!

int sum = 0;
for(i = j;i>0;i--){
sum = sum*i;
}

System.out.println( "jieguo"+sum );
第3个回答  2014-03-09
import java.util.Scanner;
public class Tsdd {
public static void main(String[] args) {

double sum=1.0;
int m = 0;
Scanner s=new Scanner(System.in);
System.out.println("请输入");
int j=s.nextInt();
m = j;
for(int i=1;i<j;i++){
m=m*(j-i);
System.out.println("m"+m);
}

System.out.println( "jieguo"+m);
}
}
首先你得循环写错了,少循环体
其次,你当第一次循环后j变大了再进来,I的最大值也变了,j继续变大,一次下去不行的,上面修改过的。
第4个回答  2014-03-09
import java.util.Scanner;

public class demo {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int i = sc.nextInt();
int sum = 1;
for(int j = 1;j<=i;j++){
sum = sum * j;
}
System.out.println(i + "! = "sum);
}
}

第5个回答  2014-03-09
for(;i<j;i++);这句话是i一直加1,直到i=j-1为止,此时i++。所以最后i=j。然后才执行j=j*(j-i)语句,因此结果是0.
相似回答