【5】Java流程控制之循环结构
一、流程控制概述
三大流程控制语句:顺序、选择、循环
1)顺序:从上往下依次执行
2)选择:if ,if-else,多重 if结构,嵌套if,switch,根据条件执行对应的内容
3)循环结构:
-while循环
-do-while循环
-for循环
-break语句
-continue语句
二、while循环
1)如果循环体只有一条语句,大括号可以省略 2)为避免死循环,小括号后面不要加分号 ,否则只执行分号前面的内容 3)n必须先进行初始化:例如 int n=1 4)循环变量n的值必须被改变:例如n++ 5)不满足条件(while后的条件)终止执行
2)语法格式:
while(循环条件[true]或[false]) { 语句; }
3)执行流程:
int n=1; while(n<5){ System.out.println(n); n++; }
4)案例:求一到五的累加和
public class mooctest { public static void main(String[] args) { //求一到五的累加和 //1+2+3+4+5 int n=1; int sum=0;//sum存放和的变量 while(n<=5) { sum=sum+n; n++; } System.out.println("1到5的累加和"+sum); } } //1到5的累加和15
5)案例:痪输出26个英文字母,分两行输出
public class mooctest { public static void main(String[] args) { // 循环输出26个英文小写字母,分两行输出 char ch = 'a'; int count = 1;// 控制换行 while (ch <= 'z'){ //小括号后面不能有;分号,会死循环 System.out.println(ch + " "); if (count % 13 == 0)//换行操作:第13个字符输完后,写一个换行符 System.out.println();//println是换行,print不换行 count++; ch++; } } }
三、do-while循环
1)语法格式:
do { 语句; }while(循环条件);
2)注意事项:
①do-while循环至少执行一次,因为循环条件在后面
②循环条件后的分号不能丢
3)执行流程:
int n = 1; do { //输出n的值 n++; }while(n<5);
4)案例:求1-5的累加和
public class mooctest { public static void main(String[] args) { //求1-5的累加和 int n=1; int sum=0; do { sum+=n; n++; }while(n<=5); System.out.println("sum="+sum); } }
5)案例:猜数字
import java.util.Scanner; public class mooctest { public static void main(String[] args) { //设置要猜的数 int num=(int)(Math.random()*100+1);//随机生成1到100之间的随机数 int guess; System.out.println("猜一个介于1到100之间的数"); do { System.out.println("请输入您猜的数:"); Scanner sc=new Scanner(System.in); guess=sc.nextInt(); if(guess>num) { System.out.println("太大"); }else if(guess<num){ System.out.println("太小"); } }while(num!=guess); System.out.println("您猜中了!答案为"+num); } } //(Math.random(),表示[0.1),也就是包括0,不包括1之间的随机数 //Math.random()*100,表示[0,100) //Math.random()*100+1,表示[1,101),也就是1到100之间的数 //1到5的累加和15
四、for循环
ps:主方法里的变量叫做局部变量。在for循环中定义的变量,出了循环就不能用了
1)语法
for(表达式1;表达式2;表达式3) { 语句; } //表达式1(对循环条件初始化,只执行一次,第一执行 ) //表达式2(循环条件,第二执行) //表达式3(循环条件进行改变,爱在执行循环体之后,最后执行)
2)语法格式
public static void main(String[] args) { int sum=0; for(int n=1;n<=5;n++) { //这里的n就是局部变量 sum=sum+n; } System.out.println(sum); }
3)for循环的注意事项
- 表达式1的初始化工作可以挪到循环体外 - 表达式2删掉后,则默认循环条件一直成立 (一直循环)可以在循环体 里面加 if break条件 - 表达式3的工作可以挪到循环体内
4)案例:将十以下的整数打印输出
public class mooctest { public static void main(String[] args) { //将十以下的整数打印输出 int i=1; //for(;;) 什么都不输入,三个;相当于下面的语句 while (true){ System.out.println(i+" "); if(i==10)break; i++; } } }
5)案例:随意输入数字,当输入0时程序停止
import java.util.Scanner; public class mooctest { public static void main(String[] args) { Scanner sc=new Scanner(System.in); int n; while(true) { System.out.print("请从键盘输入数据:"); n=sc.nextInt(); if(n==0)break; System.out.println(n); } } }
五、嵌套循环
1)执行顺序:从上往下依次执行,遇到循环之后执行循环体的内容,直到不满足条件再去执行循环体外面的的内容
2)格式
while(循环条件) { ..... while(循环条件){ ... } }
3)案例:打印4行4列的星号
public class mooctest { public static void main(String[] args) { //使用嵌套while循环输出10行10列的星号 int m=1;//外重循环的变量 int n=1;//内重循环的变量 System.out.println("输出4行4列的星号"); //外重循环控制输出几行 while (m<=4) { n=1; //内重循环控制每行输出几个星号 while(n<=m) { System.out.println("*"); n++; } System.out.println(); m++; } } }
4)案例:1到4阶乘的累加和(求1!+2!+3!+4!)
提示4!=1*2*3*4
public class demo { public static void main(String[] args) { long s=1,sum=0; for(int i=1;i<=4;i++) { s=1; for(int j=1;j<=i;j++) { s=s*j;//s存放阶乘计算的结果 } sum=sum+s; } System.out.println("1!+2!+3!+4!="+sum); } }
六、break语句和continue语句
1)break语句
- break 语句可以结束当前循环的执行;
- 执行完 break 语句后,循环体中位于 break 语句后面的语句就不会被执行;
- 在多重循环中,break 语句只向外跳一层。
- break语句可以用在循环结构和switch语句当中
2)案例
public class demo { public static void main(String[] args) { int k=0; for(int i=1;i<5;i++) { for(int j=1;j<5;j++) { k=i+j; if(j==3)break; } } System.out.println("k="+k); } }
代码分析:
3)continue语句
- 只能用在循环结构中,不能用在switch语句当中
- continue语句可以结束当前循环的执行,但是要继续下一次循环的执行
4)案例
public class demo { public static void main(){ int sum =0; for(int i=1;i<=9;i++){ if(i%2==0) continue; sum = sum +i; } System.out.println("sum ="+ sum); } }
代码分析:
七、初步调试debug
1)调试的步骤:
第一步:设置断点
第二步:执行调试(右键debug运行,或者快捷键,或者菜单栏小虫子图标)
第三步:进行单步调试(step over,不进入函数单步调试)
2)其他:
step into,进入函数,单步调试
Resume:一直执行到下个断点处
step out:从当前的位置,直接运行到下一个断点处
注意! 当断点设置在循环里面时,按step out时,并不会跳到到下一个断点处, 而是会运行一次循环,然后回到断点处,知道循环条件不达成时,才会跳到下一个断点处。
八、本节课总结
1.确定循环的次数,用for循环。
2.程序至少要执行一次,建议用do while循环
3.其他用while循环。
- 流程控制语句:顺序、选择、循环
- 选择语句:if-else,多重、嵌套,switch结构
- 循环结构:while、do while、for循环、嵌套循环、break和continue
- break和continue语句的区别:break和continue都是跳出当前循环,但continue会继续下一次循环,break是直接跳出这一层循环。
- 程序调试