while语句的使用

package Eric;
import java.util.Scanner;
public class test{
	public static void main(String[] args) {
		Scanner a=new Scanner(System.in);
		System.out.println("输入N值:");
		int N=a.nextInt();
		int s=1;
		do {
			s=s*N;//为什么N--不能写在S*=N
			N--;
		}while(N>=1);
		System.out.println("结果:"+s);
		
	}
}

 

为什么我的N--写在s*=N的前面 我输入什么数字结果都是等于0 ,

我的理解是当我输入N等于10的时候,进去do-while语句中先递减一次等于9,然后s开始进行计算得到s=1*9 然后N大于等于1,进行循环工作。 但是结果就是一直都是等于0;

当我把N自减移到下面程序结果就是正常的。。

因为 while的判断句写错了 应该写>1 因为=1会再次执行一次while循环此时的n会等于0,此时在执行n阶乘公式就会和0相乘。这也是n--为什么写在后面会是