我正在做的练习需要帮助。我目前正在学习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前三个数字是正确的,垃圾不确定它来自哪里。
请帮助
答案 0 :(得分:0)
在for循环之前,你必须初始化fact = 1;因为你两次调用该方法。
private Integer computeFactorial(){
fact = 1;
for(i=1; i<=number ;i++){
fact=fact*i;
}
return this.fact;
}