循环语句

1.for循环语句

  1.1 for循环结构

特征:重复做某件事情,具有明确的开始和停止标志

循环结构的组成:

初始化语句:用于表示循环开启时的起始状态,简单的说就是循环开始的时候什么样

条件判断语句:用于表示循环反复执行的条件,简单的说就是判断循环能否能一直执行下去

循环体语句:用于表示循环反复执行的内容,简答的说就是循环反复执行的事情

条件控制语句:用于表示循环执行中每次变化的内容,简单的说就是控制循环是否能执行下去

循环结构对应的语法:

初始化语句:这里可以是一条或多条语句,这些玉奴可以完成一些初始化操作

条件判断语句:这里使用一个结果值为boolean类型的表达式,这个表达式决定是否执行循体。例如:a<3

循环体语句:这里可以是任意语句,这些语句将反复执行

条件控制语句:这里通常是使用一条语句来改变变量的值,从而的达到控制循环是否继续向下执行的效果。常见i++,i--这样的操作。

  1.2 for循环结构格式

格式:
for(初始化语句;判断条件语句;条件控制语句){
    循环体语句;
}

执行流程:

①执行初始化语句

②执行条件判断语句,看其他结果是true还说false

    如果是false,循环结束

    如果是true,继续执行

③执行循环体语句

④执行条件控制语句

⑤回到②继续

 

 

演示代码:

package com.scxh.day01;

public class Demo01For {
    public static void main(String[] args) {
        //要求在控制台输出五次“HelloWorld”
        System.out.println("HelloWorld");
        System.out.println("HelloWorld");
        System.out.println("HelloWorld");
        System.out.println("HelloWorld");
        System.out.println("HelloWorld");
        System.out.println("--------------");

        //循环改进
        for (int i=1; i<=5; i++){
            System.out.println("HelloWorld");
        }

    }
}

输出结果:

 

2.while循环语句

2.1while循环语句基本格式

基本格式:
while(条件判断语句){
    循环体语句;
}
完整格式:
初始化语句;
while(条件判断语句){
    循环体语句;
    条件控制语句;
}

执行流程:

① 执行初始化语句

②执行条件判断语句,看其他结果是true还说false

    如果是false,循环结束

    如果是true,继续执行

③执行循环体语句

④执行条件控制语句

⑤回到②继续

 

代码演示:

package com.scxh.day01;

public class Demo01While {
    public static void main(String[] args) {
        //需求:在控制台输出五次“HelloWorld”
        int i = 1;
        while (i<=5){
            System.out.println("HelloWorld");
            i++;
        }
    }
}

 

3.do…while循环语句

3.1

基本格式:
do{
    循环体语句;
}while(条件判断语句);
完整格式:
初始化语句;
do{
    循环体语句;
    条件控制语句;
}while(条件判断语句);

执行流程:

① 执行初始化语句

②执行循环体语句

③执行条件控制语句

④执行条件判断语句,看其他结果是true还说false

    如果是false,循环结束

    如果是true,继续执行

⑤回到②继续

 

 

演示代码:

package com.scxh.day01;

public class Demo01DoWhile {
    public static void main(String[] args) {
        //需求:在控制台输出五次“HelloWorld”
        int i = 1;
        do {
            System.out.println("HelloWorld");
            i++;
        }while (i<=5);
    }
}

拓展:死循环

        //死循环
        for (;;){
            System.out.println("for");
        }
         
    
        while (true){
            System.out.println("while");
        }
     
        do {
            System.out.println("do…while");
        }while (true);

 

3.2 三种循环的区别

三种循环的区别:

  • for循环和while循环先判断条件是否成成立,然后决定是否执行循环体(先判断后执行)
  • do…whill循环先执行一次循环体,然后判断条件是否成立,是否继续执行循环体(先执行后判断)

三种循环的区别:

  • 条件控制语句所控制的自增变量,因为归属for循环的语法结构中,在for循环结束后,就不能再次被访问到了
  • 条件控制语句所控制的自增变量,对于while循环来说不归属其语法结构中,在while循环结束后,该变量还可以继续使用。

三种循环的区别:

for (;;){ }

while (true){ }

do { }while (true);

while的死循环格式是最常用的

命令提示符窗口中Ctrl+C可以结束死循环

 

4.跳转控制语句

4.1 跳转控制语句概述

  • continue 用在循环中,基于条件控制,跳过某次循环体内容的执行,继续下一次的执行
  • break      用在循环中,基于条件控制,终止循环体内容的执行,也就是说结束当前的整个循环

代码演示:

package com.scxh.day01;

public class Demo01Control {
    public static void main(String[] args) {
        for (int i = 1; i<=5; i++){
            if (i%2 == 0){
                continue;
//                break;
            }
            if (i%2 == 0){
//                continue;
                break;
            }
            System.out.println(i);
        }

    }
}

 

5. 循环嵌套

5.1 循环嵌套概述

语句结构:

  • 顺序语句  以分号结尾,表示一句话的结束
  • 分支语句     一对大括号表示if的整体结构,整体描述一个完整的if语句

         一对大括号表示switch的整体结构,整体描述一个完整的switch语句

  • 循环语句  一对大括号表示for的整体结构,整体描述一个完整的for语句

           一对大括号表示while的整体结构,整体描述一个完整的while语句

         do...while以分号结尾,整体描述一个完整的do...while语句

任何语句对外都可以看成是一句话,一句代码

分支语句中包含分支语句成为分支嵌套

循环语句中包含循环语句成为循环嵌套

 

 

 

 

 

 代码演示:

package com.scxh.day01;

/*
    循环嵌套:
        循环语句中包含循环语句
    需求:
        在控制台输出一天的小时和分钟
        分钟和小时范围:
            分钟: 0 <= minute < 60
            小时: 0 <= hour < 24
 */
public class Demo01ForFor {
    public static void main(String[] args) {
        /*
        System.out.println("0时0分");
        System.out.println("0时1分");
        System.out.println("0时2分");
        System.out.println("0时3分");
        System.out.println("---------");
        System.out.println("1时0分");
        System.out.println("1时1分");
        System.out.println("1时2分");
        System.out.println("1时3分");
        System.out.println("---------");
        System.out.println("2时0分");
        System.out.println("2时1分");
        System.out.println("2时2分");
        System.out.println("2时3分");
         */
        /*
        //循环改进
        for (int minute=0; minute<4; minute++){
            System.out.println("0时"+ minute +"分");
        }
        System.out.println("---------");

        for (int minute=0; minute<4; minute++){
            System.out.println("1时"+ minute +"分");
        }
        System.out.println("---------");

        for (int minute=0; minute<4; minute++){
            System.out.println("2时"+ minute +"分");
        }
        System.out.println("---------");
         */
        //外循环控制小时的范围,内循环控制分钟的范围
        for (int hour=0; hour<24; hour++){
            for (int minute=0; minute<60; minute++){
                System.out.println(hour + "时"+ minute +"分");
            }
            System.out.println("----------");
        }


    }
}

显示结果:

 

 

 

6. Random

6.1 Random的作用和使用步骤

作用: 用于产生一个随机数

使用步骤:

① 导包

import java.util.Random;
//导包动作必须出现在类定义的上方

② 创建对象

Random r = new Random();
// 上面这个格式里面,r是变量名,可以改变,其他的都不允许改变

③获取随机数

int number = r.nextInt(10); // 获取数据的范围:[0,10)包括0,不包括10
// 上面这个格式里面,number是变量名,可以变,数字10可以变。其他的都不允许变。

代码演示:

package com.scxh.day01;

import java.util.Random;

public class Demo01Random {
    public static void main(String[] args) {
        Random r = new Random();
//        int number = r.nextInt(10); // 获取数据的范围:[0,10)包括0,不包括10
//        System.out.println(number);

        // 用循环获取十个随机数
        for(int i=0; i<10; i++ ){
            int number = r.nextInt(10); // 获取数据的范围:[0,10)包括0,不包括10
            System.out.println("number:" + number);
        }
        //用随机数获取一个1-100之间的随机数
        int x = r.nextInt(100) + 1;
        System.out.println(x);

    }
}

演示结果:

 

 案例:猜数字

需求:系统自动生成一个1-100之间的数字,实用程序实现猜出这个数字是多少?

   当猜错的时候根据不同情况给出相应的提示。

  •  如果猜的数字比真实数字大,提示你猜的数据大了。
  •  如果猜的数字比真实数字小,提示你猜的数据小了。
  • 如果猜的数字与真实数字相等,提示你恭喜你猜中了。

分析:

① 要完成猜数字的游戏,首先需要有一个要猜的数字,使用随机数生成该数字,范围1-100

Random r = new Random();
int number = r.nextInt(100)+1;

 

② 因为无法预知几次能够猜中,因此猜数字这个操作应该是反复进行的,需要使用循环,而while循环通常用于描述未知循环次数的循环。

while(条件){}

 

③ 使用程序实现猜数字,每次均要输入猜测的数值,需要使用键盘的录入功能实现

Scanner sc = new Scanner(System.in);
int guessNumber = sc.nextInt();

 

④ 比较输入的数字和系统产生的数据,需要用分支语句,这里使用if…else…if格式来实现,根据不同情况进行猜测结果显示,当猜中后使用break结束循环即可。

if(条件:比要猜的数字大){
}else if(条件:比要猜的数字小){
}else{ break; }

代码演示:

package com.scxh.day01;

import java.util.Random;
import java.util.Scanner;

/*
需求:系统自动生成一个1-100之间的数字,实用程序实现猜出这个数字是多少?
    当猜错的时候根据不同情况给出相应的提示。
     1.如果猜的数字比真实数字大,提示你猜的数据大了。
     2.如果猜的数字比真实数字小,提示你猜的数据小了。
     3.如果猜的数字与真实数字相等,提示你恭喜你猜中了。
 */
public class Test01Random {
    public static void main(String[] args) {
        // 要完成猜数字的游戏,首先需要有一个要猜的数字,使用随机数生成该数字,范围1-100
        Random r = new Random();
        int numbear = r.nextInt(100)+1;

        while (true){
            // 使用程序实现猜数字,每次均要输入猜测的数值,需要使用键盘的录入功能实现
            Scanner sc = new Scanner(System.in);

            System.out.println("请输入你想要输入的数字:");
            int guessNumber = sc.nextInt();

            // 比较输入的数字和系统产生的数据,需要用分支语句,这里使用if…else…if格式来实现,根据不同情况进行猜测结果显示,当猜中后使用break结束循环即可。
            if(guessNumber > numbear){
                System.out.println("你猜的数字"+ guessNumber +"大了");
            }else if (guessNumber < numbear){
                System.out.println("你猜的数字"+ guessNumber +"小了");
            }else {
                System.out.println("恭喜你猜中了");
                break;
            }
        }

    }
}

演示结果:

 

posted @ 2022-01-26 22:15  麟轩  阅读(205)  评论(0编辑  收藏  举报