一、while循环
语法:
初始值
while(循环条件){
循环体
}
与do...while作比较的代码:
int a=1;
while(a<1){
System.out.println("已经输出a的值为:"+a);
}
结果:
什么都没有
你说没有就没有吗?
那就在while循环后面再加一句输出,看一看是不是出错了
验证:
int a=1;
while(a<1){
System.out.println("已经输出a的值为:"+a);
}
System.out.println("已经输出a的值为:");
结果为:
说明判断了a不小于1后,就不再执行了
二、do...while
语法:
初始值
do{
循环体
}while(循环条件)
与while比较的代码:
do{
System.out.println("已经输出b的值为:"+a);
}while(a<1);
结果为:
解释:
这do..while为啥会输出东西啊?
当人家do在循环条件的上面。程序运行到do的时候,人家do不管三七二十一就要先运行一遍,所以才会有输出
三、for
语法:
for(初始值;循环条件;迭代){
循环体
}
计算n的阶乘题目分析:
题目意思:
输入一个n,得到n*(n-1)*(n-2)...3*2*1
题目的拆分:
1:输入n===》用Scanner
2:输入n就有n个数相乘,则说明要循环n次
实现循环n次
Scanner scan=new Scanner(System.in);
System.out.println("请输入一个整数:");
int n=scan.nextInt();
for(int i=n;i>0;i--){
System.out.println(i);
结果为:
如何让输出的结果相乘呢?
*=一下就可以了
但在*=之前,在外面定义一个sum
代码变为:
Scanner scan=new Scanner(System.in);
System.out.println("请输入一个整数:");
int sum=0;
int n=scan.nextInt();
for(int i=n;i>0;i--){
sum *=i;
System.out.println(sum);
}
结果为:
找问题:
问题1:有三个输出 ==》只需要在for外面输出一次sum即可
问题2:输出全是0,怎么回事?
自己走一遍程序:
当i=3时,i>0==》sum=sum*i=0*3=0==》sum的初始值不能为0,要为1
更改后:
Scanner scan=new Scanner(System.in);
System.out.println("请输入一个整数:");
int sum=1;
int n=scan.nextInt();
for(int i=n;i>0;i--){
sum *=i;
}
System.out.println(sum);