跟日记本一起学JAVA!相信你可以的,加油~
本课闯关内容:1.照猫画虎(0/5)
2.熟悉基础知识(0000/5????)
3.练习小问(0/2)
———————————————————————————————————————————
循环结构
语言中的结构:顺序结构、分支结构、循环结构
一、循环的概念【理解即可】
- 概念:通过某个条件,重复并且有规律的执行一段程序代码。
- 循环的组成:循环变量的初始化、循环条件、循环变量改变(递增、递减)、循环体(重复执行的代码)。
基础知识1:
1. while循环:重点!!!!
公式: 循环变量的定义;
while(循环条件/布尔表达式){
// 循环体
// (循环变量的改变)
}
是怎么个执行法呢?
执行的原理:先判断循环条件是否满足(布尔表达式的结果是否true),满足(true),则执行循环体,同时循环变量改变,接着继续判断循环条件是否满足,满足-继续执行循环体,同时循环变量改变,直到循环条件不满足(布尔表达式的结果为false),结束循环,继续执行循环后面的内容。
循环的特点:先判断,再执行,执行的次数:0~n次。
注意:循环过程中,如果循环变量没有给予任何改变,可能会出现死循环!!!
循环条件如果直接给的 true,则循环一直进行,也是死循环的现象!!!
eg:参照代码为照猫画虎1:
1.假如说将代码改为没有{}中的n=n+1,那n就一直为1,
就一直达不到5这个条件,所以就会死循环。
2.将while()中写为n>0,你的起始点就比人家高,所以也会一直的不停循环,但是int类型有一个最大值是2147....到那个最大值停止。
为了停止死循环,摁ctrl+c,就会停止。
照猫画虎1:
package demo;
public class Test1{
public static void main(String[]args){
//张静蹲起:5个
//while循环的特点:先判断,再执行,执行的次数:0~n次
//可能出现死循环
int n =1;//循环变量初始化
while(n<=5){ //循环条件
System.out.println("张静蹲起...第:"+n+"个");
n=n+1;//n++;n+=1;循环变量的改变
}
System.out.println("ending...");
//2.打印输出1——100之间的所有的数据
int i =1;//循环变量的初始化
while(i<=100){//循环条件
System.out.println("i="+i);//循环体
i++;//循环变量的改变
}
//3.20~70之间的所有的偶数
int j =20;
while(j<=70){
if(j%2==0){
System.out.println("j="+j);//20
}
j++;//21
}
System.out.println("ending...");
int x = 20;
while(x<=70){
System.out.println("x="+x);
x+=2;//
}
}
}
输出:
我没法给你们看,太多了,自己输一遍看看
假如我把中间的代码改一下:
int j =20;
while(j<=70){
if(j%2==0){
System.out.println("j="+j);//20
j++;//21
}
}
把 j++;放在if打括号里面,输出时就只会有
j=20
为什么呢?
j++;加只在if里面加,不管外面的事,输入到while里面的还是外面定义的j=20,这不会改变,
Are you understand?(((@ ~ @)))
练习1:
1.计算1+2+3+...+100的累加和,并非打印输出
2.计算1——100之间所有的奇数和并存储累加结果
结尾有答案
———————————————————————————————————————————
基础知识2:
2. do...while 循环
公式: do{ //循环体
// 循环变量改变 }
while(循环条件/布尔表达式); // 分号不能省略
执行的原理:先执行循环体,同时循环变量进行改变,再判断循环条件是否满足,满足,继续执行循环体,同时循环变量改变,再判断循环条件,直到循环条件不满足(结果为 false为止),结束循环,继续执行循环后面的内容。
执行特点:先执行,再判断,执行次数:1~n次。
照猫画虎2:
package demo;
import java.util.Scanner;
public class Test3{
public static void main(String[]args){
//张静蹲起:5个
int n =1;//循环变量的初始化
do{
System.out.println("张静蹲起,第:"+n+"个");
n++;//循环变量的改变
}while(n<=5);//判断条件
System.out.println("ending...");
//打印输出1——100之间所有数据(do...while 循环)
int n1 =1;//循环变量的初始化
do{
System.out.println("n1="+n1);
n1++;//循环变量的改变
}while(n1<=100);//判断条件
/*作业检查:第一次无条件检查,当输入为n,被打回,再次被检查...直到合格,终止
*/
Scanner sc=new Scanner(System.in);
char result;
do{
System.out.println("作业检查中...");
System.out.println("输入作业的检查结果:");
result = sc.next().charAt(0);
}while(result=='n');
System.out.println("恭喜,检查pass!!!...");
}
}
———————————————————————————————————————————
基础知识3:
3. for 循环(重点!!!!!)
与上面的循环结构不同的是,for()里就像上面的一堆,这里循环变量的初始化,循环条件/布尔表达式 ,循环变量的改变都在一个()里面了
公式:
for(①循环变量的初始化; ②循环条件/布尔表达式 ; ③循环变量的改变){
// 循环体④
}
①循环变量的初始化,这部分仅执行一次
- 循环执行的原理:先进行循环变量的初始化①,然后判断循环条件②,条件成立(结果为true),执行的循环体④,
接着执行循环变量的改变③,再次判断循环条件②,条件成立,继续执行循环体④,再次改变循环变量③,直到循环条件不成立(结果为false),结束循环,继续循环之后的内容。
1->2->4->3->2->4->3->直到循环条件不成立........
特点:先判断,再执行,执行的次数:0~n次。
- 注意:
a. for后面的()中循环变量的改变可以写在循环体中:
for(循环变量的初始化;循环条件; ){
// 循环体
// 循环变量的改变 ------------>不建议
}
b. for()中的循环变量的定义及初始化可以写在循环的前面,但是定义循环的前面的循环变量,作用范围扩大,开发时,通常将循环变量的定义及初始化定义在()中,这种定义变量只能在for循环结构中使用,循环结束,循环变量也被收回,减小空间,从而提高空间的利用率。
照猫画虎3:
package demo;
import java.util.Scanner;
public class Test4{
public static void main(String[]args){
//张静蹲起:5个
for(int i=1;i<=5;i++){
System.out.println("张静蹲起...第:"+i+"个");
}
//System.out.println("ending...1111"+i);因为超出循环范围
//打印输出:1——100之间的数据
for(int i=1;i<=100;i++){
System.out.println("i="+i);
}
int sum=0;
for(int i=1;i<=100;i++){
sum+=1;
}
System.out.println("sum="+sum);
//4.打印输出 所有三位数
//5.计算50——200之间能被3整除的数据和,并打印出来
for(int i=100;i>=100&&i<1000;i++){
System.out.println(i);
}
int sum1=0;
for(int i=50;i>=50&&i<=200;i++){
if(i%3==0){
sum1=sum1+i;
}
}
System.out.println("sum1="+sum1);
}
}
声明变量,写在外面int i=1,范围广,写在for的里面,变量会随着循环的结束而消失,(如果写在外面eg:外面:int i=1,后面:就不能为i了,你之后的变量都要改一个新名字,甚至造成你下面用的时候变量的污染,所以最好写在里面)
总结:
- 如果循环次数明确时,建议使用 for
- 如果循环次数不明确时,建议使用 while 或是 do..while
———————————————————————————————————————————
基础知识4:
三、循环的控制语句【重点】
- break:用在循环中,代表结束,终止、跳出循环结构。
- continue:结束本次循环,从而进入下一次循环。
注意:break:不仅可以用在循环中还可以用在 switch...case结构,continue只能用在循环中。
照猫画虎4:
package demo;
import java.util.Scanner;
public class Test5{
public static void main(String[]args){
//break:终止,结束循环结构
for(int i=1;i<=5;i++){
if(i==3){break;}
System.out.println("i="+i);//i=1;i=2;
}
System.out.println("ending...");
//continue:中断,结束本次循环,从而进入下一次
for(int i=1;i<=5;i++){
if(i==3){continue;}
System.out.println("i="+i);//i=1;i=2;i=4;i=5;
}
System.out.println("ending...");
//计算100——1000之间的数据累加和,当累加和大于5000时,结束累加,打印输出结果
int sum=0;
for(int i=100;i>=100&&i<=1000;i=i+1){
if(sum>5000){break;}
sum=sum+i;
System.out.println("sum="+sum);
}
System.out.println("ending...");
}
}
代码:
for(int i=1;i<=5;i++){
if(i==3){break;}
System.out.println("i="+i);//i=1;i=2;
}
System.out.println("ending...");
输出:
i=1
i=2
ending...(意思是从一慢慢加一,直到i等于3,因为break就跳出这个循环,所以到了3之后就没有了,这个循环终止了,呜呜呜好伤心)
代码:
for(int i=1;i<=5;i++){
if(i==3){continue;}
System.out.println("i="+i);//i=1;i=2;i=4;i=5;
}
System.out.println("ending...");
输出:
i=1
i=2
i=4
i=5
ending...(又是直到i到3,因为continue跳出了这次的循环,但接下来的循环依旧继续,3的那次循环不见了)
注意:代码中的:
if(i==3){break;}和if(i==3){continue;}
这里的continue和break也可以不带{},结果没有影响。
———————————————————————————————————————————
基础知识5:
四、循环的嵌套
- 概念:在一个循环结构中,又定义了一个完整的循环结构。
- 双层循环的循环次数:外层循环次数*内层循环的次数
3. break 和 continue用在循环嵌套中: break : 终止、跳出本层的循环
continue: 结束本层本次循环,从而进入下一次循环。
- 双层循环可以用于打印输出图形,通常用 外层循环控制图形的行数,内层循环控制图形的列数(你可以尝试着做爱心~~~~)
照猫画虎5:
package demo;
public class Test6{
public static void main(String[] args){
// 循环的嵌套
// 外层
for(int i=1;i<=3;i++){ // i=4
// 内层循环
for(int j=1;j<=2;j++){ // j=2
System.out.println("i="+i+",j="+j); // 11 12 21 22 31 32
}
}
System.out.println("-------");
// 外层循环:控制行数
for(int j=1;j<=20;j++){
// 内层循环“控制每行的内容,控制列数
for(int i=1;i<=9;i++){
System.out.print("*");
}
System.out.println();// 换行
}
/*
*
**
***
****
*****
i=1 j=1
i=2 j=2
i=3 j=3
*/
for(int i=1;i<=20;i++){
for(int j=1;j<=i;j++){
System.out.print("*");
}
System.out.println();// 换行
}
}
}
让我们看一看图形长什么样,
*********
*********
*********
*********
*********
*********
*********
*********
*********
*********
*********
*********
*********
*********
*********
*********
*********
*********
*********
*********
*
**
***
****
*****
******
*******
********
*********
**********
***********
************
*************
**************
***************
****************
*****************
******************
*******************
********************
啊啊啊啊啊啊,太多了,下次应该把值设的小一点。
练习1答案:
package demo;
public class Test2{
public static void main(String[]args){
//计算1+2+3+...+100的累加和,并非打印输出
int i=1;
int sum = 0; //存储累加结果
while(i<=100){
sum=sum+i;//sum+=i;
i++;
}
//System.out.println("sum="+sum);
//计算1——100之间所有的奇数和
//存储累加结果
int i1=1;
int sum2=0;
while(i1<=100){
if(i1%2==1){
sum2=sum2+i1;
}
i1++;//20
//sum+=i;
}
System.out.println("sum2="+sum2);
}
}
跟我一步步学,慢慢跑?踏实学。
未完待续。。。