老师让做个 1*2*3*.....*100的结果是多少.
我给各位大侠看看我编写的代码有什么问题.package zy;
public class jiayou{
public int he(int a){
int sum=1;

for(int b=2;b<a;b++){
sum=sum*b;
}
return sum;
}
public static void main(String[] args){
jiayou c = new jiayou();
int over = c.he(100);
System.out.println(over);
}
}运行结果是0,这是为什么呢,请各位高手帮忙解答一下,哪错了,为什么错了.
小弟不胜感激~~~~~~~~~~

解决方案 »

  1.   


    import java.math.*;
    public class jiayou{ 
    public BigInteger he(int a){ 
    BigInteger sum=new BigInteger("1"); 

    for(int b=2;b <a;b++){ 
    sum=sum.multiply(new BigInteger(""+b)); 

    return sum; 

    public static void main(String[] args){ 
    jiayou c = new jiayou(); 
    BigInteger over = c.he(100); 
    System.out.println(over); 


      

  2.   

    结果的值太大,int的范围太小,导致程序溢出
    public class jiayou{ 
    public double he(int a){ 
    double sum=1; for(int b=2;b <a;b++){ 
    sum=sum*b; 

    return sum; 

    public static void main(String[] args){ 
    jiayou c = new jiayou(); 
    double over = c.he(100); 
    System.out.println(over); 

    } 运行结果为:
    9.33262154439441E155
      

  3.   

    int能容下你的100!么  益处了吧
      

  4.   

      应该用 long 型定义
      

  5.   

    for(int b=2;b <a;b++){ 
    也应该是:for(int b=2;b=<a;b++){ 
      

  6.   

    public class jiayou {
    public double he(int a) {
    double sum = 1.0; for (double b = 2.0; b <= (double) a; b++) {
    sum = sum * b;
    }
    System.out.println(sum);
    return sum;
    } public static void main(String[] args) {
    jiayou c = new jiayou();
    double over = c.he(4);
    System.out.println(over);
    }
    }
      

  7.   

    你的int容不下100的阶层啊  lz
      

  8.   

    溢出了,java中,如果你是大整数的话就用BigInteger,如果你是大浮点型的话就用BigDecimal