第一节 循环结构 for、while、do while
1.1 for 循环
语法结构:
for(表达式一;表达式二;表达式三) {
循环体
}
语法解析:
表达式一:声明初始化变量,只执行一次。可以同时声明多个变量用逗号隔开。
表达式二:判断变量是否需要循环的条件。
表达式三:每次执行完循环体后,变量变化的具体情况。
当for循环开始执行后,表达式一开始声明初始化变量,初始化变量后,执行表达式二判断变量是否满足布尔表达式,若不满足条件,执行结束,若满足条件,则执行循环体内的内容,执行完后再执行表达式三改变变量的值,再执行表达式二判断改变后的值是否满足条件,一次循环,直到不满足表达式二里的布尔表达式。
例程Demo3.java
1 public class Demo3{ 2 public static void main(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 }
1.2 局部变量与全局变量(有误?)
全局变量:main范围内,都能被执行;
局部变量:定义在局部,只能在局部范围内被执行。作用域具有局限性,比如在for循环中定义的变量,只能在该for循环中被访问,出了范围就不能被访问。
例程Demo3.java
思考:表达式1写在for循环外出现什么情况?
表达式2不写会出现什么情况?//死循环
表达式3不写会出现什么情况?//死循环
表达式1,2,3都不写会出现什么情况?//死
1.2.1练习
1:求1-100内所有数/奇数/偶数的和;
2: 5的阶乘
3:1-1000内的水仙花数
Text1.java
1 public class Text1{ 2 public static void main(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 int y,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 }
1.3 while 循环
语法:
while(布尔表达式){
循环内容;
}
语法解析:满足布尔表达式执行循环内容,不满足跳出循环,一般循环里包括改变循环条件的变量。
例程:Demo5.java
1 public class Demo5{ 2 public static void main(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 }
1.3.1 break关键字
作用:
1、在Java中做终止符,防止渗透;
2、跳出循环的一个条件(跳出离它最近的一层的循环);
例程:Demo5.java
1.3.2 contiue关键字
作用:跳过单次循环,不继续执行本次循环内容,继续进行下一次循环
例程:Demo6.java
1 public class Demo6{ 2 public static void main(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 }
思考题:for循环和while循环可以互换吗?for循环与while循环运用的时机是什么时候?
可以互换。可以进行互换,但往往一般是知道循环次数的情况下进行互换。for循环一般用于知道循环的次数;while循环一般用于不知道循环次数。
1.4 do while 循环
语法:
do {
循环内容;
} while(布尔表达式);
语法解析:先执行一次循环内容,再判断是否满足条件,满足布尔表达式执行循环内容,不满足跳出循环,一般循环里包括改变循环条件的变量。
例程:Demo7.java
1 public class Demo7{ 2 public static void main(String[] args){ 3 int i =-8; 4 do{ 5 System.out.println(i); 6 }while(i >0); 7 8 } 9 10 }
思考题:while 与do while的区别?
while 循环可能一次循环内容都不会执行,但是do while 循环至少会执行一次循环内容。
例程:Demo7.java
练习用while实现一千内的水仙花数并计数;
1.5 循环的嵌套(for循环嵌套为主)
for(int i=0;i<M;i++){
for(int j=0; j<N;j++){
循环体内容
}
}
语法解析:外层循环循环一次,里层循环循环直到跳出循环为止,循环的总次数为M*N次。
例程:用for 循环实现九九乘法口诀Demo8.java
1 public class Demo8{ 2 public static void main(String[] args){ 3 /*** 4 5 for嵌套实现乘法口诀 6 1*1=1 7 1*2=2 2*2=4 8 1*3=3 2*3=6 3*3=9 9 1*4=4 2*4=8 3*4=12 4*4=16 10 1*5=5 2*5=10 3*5=15 4*5=20 5*5=25 11 1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36 12 1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49 13 1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64 14 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=81 15 16 */ 17 18 int result; 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 }
原文地址:https://www.cnblogs.com/Kanekiyi/p/9500995.html