第一节循环结构 for、while、do while
1.1for 循环
语法结构:
for(表达式一;表达式二;表达式三) {
循环体
}
语法解析:
表达式一:声明初始化变量,只执行一次。可以同时声明多个变量用逗号隔开。
表达式二:判断变量是否需要循环的条件。
表达式三:每次执行完循环体后,变量变化的具体情况。
当for循环开始执行后,表达式一开始声明初始化变量,初始化变量后,执行表达式二判断变量是否满足布尔表达式,若不满足条件,执行结束,若满足条件,则执行循环体内的内容,执行完后再执行表达式三改变变量的值,再执行表达式二判断改变后的值是否满足条件,一次循环,直到不满足表达式二里的布尔表达式。
例程Demo3.java
1 public classDemo3{2 public static voidmain(String[] args) {3
4 int i ; //全局变量,main方法范围内都可以调用
5 for(i=1; i<5;++i){6
7 System.out.println("我是for里面的i="+i);8
9 }10 System.out.println("我是for外面的i="+i); //全局变量,main方法范围内都可以调用
11 for (int j =1; j<7; ++j){12
13 System.out.println("我是for里面的 j="+j); //局部变量,只能在定义范围内调用
14 }15 //System.out.println("我是for外面的 j"+j);
16
17 }18
19 }
View Code
1.2 局部变量与全局变量(有误?)
全局变量:main范围内,都能被执行;
局部变量:定义在局部,只能在局部范围内被执行。作用域具有局限性,比如在for循环中定义的变量,只能在该for循环中被访问,出了范围就不能被访问。
例程Demo3.java
思考:表达式1写在for循环外出现什么情况? //正常执行
表达式2不写会出现什么情况?//死循环
表达式3不写会出现什么情况?//死循环(当表达式1满足表达式2)
表达式1,2,3都不写会出现什么情况?//死循环 for (;;)
1.2.1练习
1:求1-100内所有数/奇数/偶数的和;
2: 5的阶乘
3:1-1000内的水仙花数
Text1.java
1 public classText1{2 public static voidmain(String[] args){3 int i,sum=0;4 for( i=1;i<101; ++i){5 sum =sum+i;6
7 }8 System.out.println("1到100的和是:"+sum);9
10 int j,sumJiShu=0;11 for( j=1; j<100; j+=2){12
13 sumJiShu =sumJiShu+j;14
15 }16 System.out.println("1到100所有奇数的和是:"+sumJiShu);17
18 int k,sumOuShu=0;19 for(k=2;k<101; k+=2){20
21 sumOuShu =sumOuShu+k;22
23 }24 System.out.println("1到100所有偶数的和是:"+sumOuShu);25
26
27 int x,sumjShu=1;28 for(x=1;x<6; x+=1){29
30 sumjShu =sumjShu*x;31
32 }33 System.out.println("5的阶乘是:"+sumjShu);34
35
36 inty,a,b,c;37 int conunt = 0;38 //求1-1000的水仙花数39 //三位数,每位数的个位,十位,百位所对应的数值的立方的和正好等于这个数。
40 for(y=100; y<1000; ++y){41
42 a=y/100 ; //百位
43
44 b=(y/10)%10;45
46 c=y%10;47
48
49 if (a*a*a+b*b*b+c*c*c ==y){50
51 System.out.println("水仙花数为:"+y);52 conunt ++;53
54 }55
56 }57
58 System.out.println("共有水仙花数"+conunt+"个");59
60 }61
62 }
View Code
1.3 while 循环
语法:
while(布尔表达式){
循环内容;
}
语法解析:满足布尔表达式执行循环内容,不满足跳出循环,一般循环里包括改变循环条件的变量。
例程:Demo5.java
1 public classDemo5{2 public static voidmain(String[] args){3 int i = 0;4 while (i<10){5 System.out.println("鲁班七号");6 i++;7 }8
9 int j = 0;10 while (true){11 System.out.println("智障二百五");12 j++;13 if(j==10){14 break; //跳出循环,离它最近的一层循环while循环
15 }16
17 }18
19 }20
21 }
View Code
1.3.1 break关键字
作用:
1、在Java中做终止符,防止渗透;
2、跳出循环的一个条件(跳出离它最近的一层的循环);
例程:Demo5.java
1.3.2 contiue关键字
作用:跳过单次循环,不继续执行本次循环内容,继续进行下一次循环
例程:Demo6.java
1 public classDemo6{2 public static voidmain(String[] args){3 //continue 关键字
4 int i = 0;5 while (i<10) {6 i++;7 if (i==5){8
9 System.out.println("吃到第"+i+"个包子看见虫!");10
11 continue;12 }13
14 System.out.println("小明吃了第"+i+"个包子!");15
16 }17
18 }19
20 }
View Code
思考题:for循环和while循环可以互换吗?for循环与while循环运用的时机是什么时候?
可以互换。可以进行互换,但往往一般是知道循环次数的情况下进行互换。for循环一般用于知道循环的次数;while循环一般用于不知道循环次数。
1.4 do while 循环
语法:
do {
循环内容;
} while(布尔表达式);
语法解析:先执行一次循环内容,再判断是否满足条件,满足布尔表达式执行循环内容,不满足跳出循环,一般循环里包括改变循环条件的变量。
例程:Demo7.java
1 public classDemo7{2 public static voidmain(String[] args){3 int i =-8;4 do{5 System.out.println(i);6 }while(i >0);7
8 }9
10 }
View Code
思考题:while 与do while的区别?
while 循环可能一次循环内容都不会执行,但是do while循环至少会执行一次循环内容。
例程:Demo7.java
练习用while实现一千内的水仙花数并计数;
1.5 循环的嵌套(for循环嵌套为主)
for(int i=0;i
for(int j=0; j
循环体内容
}
}
语法解析:外层循环循环一次,里层循环循环直到跳出循环为止,循环的总次数为M*N次。
例程:用for 循环实现九九乘法口诀Demo8.java
1 public classDemo8{2 public static voidmain(String[] args){3 /***4
5 for嵌套实现乘法口诀6 1*1=17 1*2=2 2*2=48 1*3=3 2*3=6 3*3=99 1*4=4 2*4=8 3*4=12 4*4=1610 1*5=5 2*5=10 3*5=15 4*5=20 5*5=2511 1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=3612 1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=4913 1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=6414 1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=8115
16 */
17
18 intresult;19
20 for(int j=1; j<=9; j++){21
22 for(int i=1;i<=j; i++){23
24 result = i*j;25 System.out.print( i+"*"+j+"="+ result+"\t"); //"制表符\t"
26
27 }28 System.out.println( );29
30 }31
32 }33
34 }
View Code