Java因子打印错误的价值

时间:2018-04-15 17:01:19

标签: java

我正在做的练习需要帮助。我目前正在学习Java。我正在做一个阶乘练习,我的应用程序会提示一个数字的用户,然后计算该数字的阶乘并返回它以显示。

这是我的GUI类:

public String factorial;
public String fieldnumber;

public String calculateFactorial() {
    fieldnumber = this.numberField.getText();
    Number number = new Number(Integer.parseInt(fieldnumber));
    System.out.print(number.toString());

    return number.toString();
}

private void calculateBtnActionPerformed(java.awt.event.ActionEvent evt) {                                                  
     System.out.println( this.calculateFactorial());
}

这是我的号码类:

public class Number {    
    private int number;
    int i,fact=1;

    public Number(int number){
        this.number = number;
    }

    public Integer getNumber(){
        return this.number;
    }

    public void setNumber(int number){
        this.number = number;
    }

    private Integer computeFactorial(){
        for(i=1; i<=number ;i++){    
            fact=fact*i;              
        }
      return this.fact;
    }

    public String toString() { 
        return Integer.toString(this.computeFactorial());
    }
}

当我打印我的计算因子时,真实结果是打印垃圾值的一部分。阶乘6是720,但我看到720518400前三个数字是正确的,垃圾不确定它来自哪里。

请帮助

1 个答案:

答案 0 :(得分:0)

在for循环之前,你必须初始化fact = 1;因为你两次调用该方法。

private Integer computeFactorial(){
      fact = 1;
      for(i=1; i<=number ;i++){    
        fact=fact*i;  
     }
      return this.fact;
}