请帮小弟我解释一下这段代码好吗

请帮我解释一下这段代码好吗
import java.util.Scanner;

/**
 * 编写JAVA程序,实现接收用户输入的正整数,输出该数的阶乘
  要求:限制输入的数据在1-10之间,无效数据进行提示,结束程序
  输出结果如:4!=1*2*3*4=24
 */
public class FactDemo {

/**
* @param args
*/
public static void main(String[] args) {
//定义变量接收用户输入,计算阶乘,累计表达式
int number,fact=1;
String msg="";
Scanner input=new Scanner(System.in);

//提醒输入
System.out.println("请输入一个10以内的正整数:");
number=input.nextInt();

//验证有效性
if(number>10 || number<1){
System.out.println("数据无效");
return;
}

System.out.print(number+"!=");

//计算阶乘
for(int i=1;i<number;i++){
msg+=i+"*";
fact*=i;
}

//组合结果,并显示
fact*=number;
msg+=number+"="+fact;
System.out.println(msg);
}[/color]

}
从for后面,fact和msg为什么可以等两次啊?

------解决方案--------------------