【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
View Code

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++;
        }
    }
}
View Code

三、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);
    }
}
View Code

 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
View Code

四、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++;
        }
    }
}
View Code

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);
        }
    }
}
View Code

 五、嵌套循环

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++;
        }
    }
}
View Code
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);
    }
}
View Code

 六、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);
    }
}
View Code

代码分析:

 

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);
    }
}
View Code

代码分析:

 

七、初步调试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是直接跳出这一层循环。
  • 程序调试

 

原文地址:https://www.cnblogs.com/haifeima/p/12603948.html