5.2_[Java 流程控制]-初识 while/do-while/for 循环体

##################################################

目录

while 循环结构

什么是循环

while 执行原理

while 语法

死循环概念

while 程序示例

do-while 循环结构

do-while 原理

do-while 语法

使用 do-while 循环输出 1~50

控制台输入信息控制循环并统计循环次数

for 循环结构

经典的 for 循环

语法和参数详解及执行流程

for 循环示例

根据指定的循环次数录入指定的数据

如何遍历数据呢

获取一个整数 & 计算输出加法表


##################################################

while 循环结构

——————————

什么是循环

        一句话:

在什么条件成立时不断地做什么事情

        所以循环结构就是循环条件和循环操作

——————————

while 执行原理

        while 循环结构的执行顺序一般如下:

声明并初始化循环变量
判断循环条件是否满足 满足则执行循环操作 不满足则退出循环
执行完循环操作后 再次判断循环条件 决定继续执行循环还是退出循环

        实际上 while 循环结构如果第一次判断循环条件就不满足的话

        就会直接退出循环 循环操作一个都不会执行!

        所以 是很有特点的:

先判断
再执行

——————————

while 语法

        while 语法结构:

while ( 条件表达式 ) {

	/* 循环操作 */
}

——————————

死循环概念

        是不是很好理解?

        循环需要注意的是 一定要查看循环是否能退出
        避免死循环!
        死循环就是 永远循环下去!不会结束
        除非你中断程序或者重启/关机。。。

——————————

while 程序示例

        写个小程序输出 1-100

只要 i 不超过 100
就不停的输出当前 i 的值

        code:

public class test {

	public static void main(String[] Args) {

		int i = 0;

		while ( i <= 100 ) {

			System.out.println ( "现在是数字 " + i );

			i = i + 1;
		}
	}
}

        demo:

C:\Users\byme\javaTest>javac test.java

C:\Users\byme\javaTest>java test
现在是数字 0
现在是数字 1
现在是数字 2
现在是数字 3
现在是数字 4
现在是数字 5
现在是数字 6
现在是数字 7
现在是数字 8
现在是数字 9
现在是数字 10
现在是数字 11
现在是数字 12
现在是数字 13
现在是数字 14
现在是数字 15
现在是数字 16
现在是数字 17
现在是数字 18
现在是数字 19
现在是数字 20
现在是数字 21
现在是数字 22
现在是数字 23
现在是数字 24
现在是数字 25
现在是数字 26
现在是数字 27
现在是数字 28
现在是数字 29
现在是数字 30
现在是数字 31
现在是数字 32
现在是数字 33
现在是数字 34
现在是数字 35
现在是数字 36
现在是数字 37
现在是数字 38
现在是数字 39
现在是数字 40
现在是数字 41
现在是数字 42
现在是数字 43
现在是数字 44
现在是数字 45
现在是数字 46
现在是数字 47
现在是数字 48
现在是数字 49
现在是数字 50
现在是数字 51
现在是数字 52
现在是数字 53
现在是数字 54
现在是数字 55
现在是数字 56
现在是数字 57
现在是数字 58
现在是数字 59
现在是数字 60
现在是数字 61
现在是数字 62
现在是数字 63
现在是数字 64
现在是数字 65
现在是数字 66
现在是数字 67
现在是数字 68
现在是数字 69
现在是数字 70
现在是数字 71
现在是数字 72
现在是数字 73
现在是数字 74
现在是数字 75
现在是数字 76
现在是数字 77
现在是数字 78
现在是数字 79
现在是数字 80
现在是数字 81
现在是数字 82
现在是数字 83
现在是数字 84
现在是数字 85
现在是数字 86
现在是数字 87
现在是数字 88
现在是数字 89
现在是数字 90
现在是数字 91
现在是数字 92
现在是数字 93
现在是数字 94
现在是数字 95
现在是数字 96
现在是数字 97
现在是数字 98
现在是数字 99
现在是数字 100

C:\Users\byme\javaTest>

##################################################

do-while 循环结构

——————————

do-while 原理

        同 while 循环不同的是 do-while 循环是先执行再判断

        也就是说 她会先执行一遍 然后再看条件
        无论干嘛 都会先执行一遍

        过程:

声明并初始化循环变量
执行一遍循环操作
判断循环条件 如果循环条件满足 继续循环 条件不满足 退出循环

——————————

do-while 语法

        语法结构:

do {

	/* 循环操作 */
} while ( 循环条件 );

——————————

使用 do-while 循环输出 1~50

        code:

public class test {

	public static void main(String[] Args) {

		int i = 1;

		do {

			System.out.println ( "当前循环次数 >>> " + i );
			i = i + 1;
		} while (i <= 50);
	}
}

        demo:

C:\Users\byme\javaTest>javac test.java

C:\Users\byme\javaTest>java test
当前循环次数 >>> 1
当前循环次数 >>> 2
当前循环次数 >>> 3
当前循环次数 >>> 4
当前循环次数 >>> 5
当前循环次数 >>> 6
当前循环次数 >>> 7
当前循环次数 >>> 8
当前循环次数 >>> 9
当前循环次数 >>> 10
当前循环次数 >>> 11
当前循环次数 >>> 12
当前循环次数 >>> 13
当前循环次数 >>> 14
当前循环次数 >>> 15
当前循环次数 >>> 16
当前循环次数 >>> 17
当前循环次数 >>> 18
当前循环次数 >>> 19
当前循环次数 >>> 20
当前循环次数 >>> 21
当前循环次数 >>> 22
当前循环次数 >>> 23
当前循环次数 >>> 24
当前循环次数 >>> 25
当前循环次数 >>> 26
当前循环次数 >>> 27
当前循环次数 >>> 28
当前循环次数 >>> 29
当前循环次数 >>> 30
当前循环次数 >>> 31
当前循环次数 >>> 32
当前循环次数 >>> 33
当前循环次数 >>> 34
当前循环次数 >>> 35
当前循环次数 >>> 36
当前循环次数 >>> 37
当前循环次数 >>> 38
当前循环次数 >>> 39
当前循环次数 >>> 40
当前循环次数 >>> 41
当前循环次数 >>> 42
当前循环次数 >>> 43
当前循环次数 >>> 44
当前循环次数 >>> 45
当前循环次数 >>> 46
当前循环次数 >>> 47
当前循环次数 >>> 48
当前循环次数 >>> 49
当前循环次数 >>> 50

C:\Users\byme\javaTest>

——————————

控制台输入信息控制循环并统计循环次数

        在控制台输入字符来控制循环输出

        code:

import java.util.*;

public class test {

	public static void main(String[] Args) {

		Scanner input = new Scanner(System.in);

		int nur = 1;
		String answer = "";

		do {

			System.out.print("是否开始循环?(yes/no) <<< ");
			answer = input.next();

			if( "yes".equals( answer ) ) {

				System.out.println ( "开始循环...\n当前循环次数 [" + nur + "]\n" );
				nur ++;
			}
		} while ( ! "no".equals( answer ) );

		System.out.println ( "\n循环结束!" );
	}
}

        demo:

C:\Users\byme\javaTest>javac test.java

C:\Users\byme\javaTest>java test
是否开始循环?(yes/no) <<< yes
开始循环...
当前循环次数 [1]

是否开始循环?(yes/no) <<< yes
开始循环...
当前循环次数 [2]

是否开始循环?(yes/no) <<< yes
开始循环...
当前循环次数 [3]

是否开始循环?(yes/no) <<< 1
是否开始循环?(yes/no) <<< 4
是否开始循环?(yes/no) <<<
0
是否开始循环?(yes/no) <<< wahd
是否开始循环?(yes/no) <<< ?><!
是否开始循环?(yes/no) <<< yes
开始循环...
当前循环次数 [4]

是否开始循环?(yes/no) <<< no

循环结束!

C:\Users\byme\javaTest>

##################################################

for 循环结构

——————————

经典的 for 循环

        for 循环给程序语言添了浓重的一笔!!
        我们以后写程序 只要是循环 几乎都是用 for 循环来解决!
        可能不是最好的解决方法 却是最方便的!!

        for 循环的主要作用是反复执行一段代码
        直到满足一定的条件为止

        for 循环可以分成四个部分

        初始部分

设置循环的初始状态
例如设置记录循环次数的变量 i 为 0

        循环体

重复执行的代码
例如输出 123

        迭代部分

循环体执行完毕后

下一次循环开始前要执行的部分
在 while 循环结构中她作为循环体的一部分
例如使用 i++ 进行循环次数的累加

        循环条件

判断是否继续循环的条件
例如使用 i<100 判断循环次数是否已经达到 100

        上面四个部分一个都不能出错
        不然就会循环错误

——————————

语法和参数详解及执行流程

        语法:

for ( 表达式_1; 表达式_2; 表达式_3 ) {

	/* 循环体 */
}

        三个表达式含义:

    表达式_1 :
赋值语句
	循环结构的初始部分 为循环变量赋初值
	例如:
int i = 0;

	表达式_2 :
条件语句
	条件语句 循环结构的循环条件
	例如:
i < 100;

	表达式_3 :
赋值语句
	通常使用 ++ 或者 -- 运算符
	循环结构的迭代部分 通常用来修改循环变量的值
	例如:
i ++

        或者这样来理解:

for ( 初始部分; 条件判断; 改变循环变量值 ) {

	/* 循环操作 */
}

        执行流程:

        先是初始部分


        然后进行条件判断 false 结束 true 继续
        根据条件判断结果来进行选择 

        如果为假 直接退出循环

        如果为真 执行循环体

        然后第三部分的控制语句中改变循环变量值

        回到第二次继续判断
        接着重复进行条件判断然后继续上面的操作
        直到退出循环结构

——————————

for 循环示例

%%%%%

根据指定的循环次数录入指定的数据

        循环录入指定的数据 然后加以使用

        可以在条件或者迭代部分进行输入

        code:

import java.util.*;

public class test{

	public static void main(String[] Args){

		Scanner input = new Scanner(System.in);

		int num = 0, k = 0;    /* 每次输入的数字, 循环次数 */
		int sum = 0;    /* 计算她们的和 */
		double avg = 0.0;    /* 计算平均数 */
		String go = "";	/* 录入数据 */

		System.out.print ( "请输入任务名称 <<< " );
		go = input.nextLine();
		System.out.print ( "请输入循环次数 <<< " );
		k = input.nextInt();

		System.out.print ( "\n——————————\n" );
		for ( int i = 0; i < k; num = input.nextInt(), i ++, sum += num )
		/* 循环 k 次 记录 k 个数据 sum += num 等同于 sum = sum + num */
			System.out.print ( " ["+ k +"] 个数据当前第 ["+ (i + 1) +"] 个数据 <<< " );


		/* 汇报 */
		avg = (double)sum / 5;	/* 平均数 */
		System.out.println ( "\n任务 《"+ go +"》 的平均数是 >>> " + avg );
	}
}

        demo:

C:\Users\byme\javaTest>javac test.java

C:\Users\byme\javaTest>java test
请输入任务名称 <<< job 1
请输入循环次数 <<< 5

——————————
 [5] 个数据当前第 [1] 个数据 <<< 521
 [5] 个数据当前第 [2] 个数据 <<< 520
 [5] 个数据当前第 [3] 个数据 <<< 522
 [5] 个数据当前第 [4] 个数据 <<< 1314
 [5] 个数据当前第 [5] 个数据 <<< 5211314

任务 《job 1》 的平均数是 >>> 1042838.2

C:\Users\byme\javaTest>

%%%%%

如何遍历数据呢

        比如遍历输出字符串的内容

        code:

import java.util.*;

public class test{

	public static void main(String[] Args){

		Scanner input = new Scanner(System.in);

		System.out.printf ( "\n请输入一个字符串 <<< " );
		String str = input.nextLine();

		System.out.printf ( "\n输入的字符串为 >>> \n\t" );
		for (int i = 0; i <= str.length(); i ++ ) {

			if ( ( i >= str.length() ) )
				System.out.printf ( "\n\t输入了 [%d] 个字符..", i );
			else
				System.out.printf ( "[%c] ", str.charAt(i) );
		}

	}
}

        demo:

C:\Users\byme\javaTest>javac test.java

C:\Users\byme\javaTest>java test

请输入一个字符串 <<< w真的好喜欢你o

输入的字符串为 >>>
        [w] [真] [的] [好] [喜] [欢] [你] [o]
        输入了 [8] 个字符..
C:\Users\byme\javaTest>

%%%%%

获取一个整数 & 计算输出加法表

        code:

import java.util.*;

public class test{

	public static void main(String[] Args){

		Scanner input = new Scanner(System.in);

		int i, j, val;

		System.out.printf ( "\n请输入一个数字 <<< " );
		val = input.nextInt();

		System.out.println ( "根据这个值输出以下加法表 >>> ");
		for ( i = 0, j = val; i <= val; i ++, j -- )
				System.out.println ( "\t" + i + " + " + j + " = " + (i + j) );

		System.out.printf ( "\n输入 y 继续 <<< " );
		if ( input.next().equals("y") )	/* 先让你输入然后再 equals 比较 */
			main (new String[0]);	/* 在 main 方法中调用 main() 自身 因为 main 方法参数 String[] Args 声明了传入一个字符串作为程序的入口 因此在调用 main 的时候必须放入一个字符串 哪怕是空的 */
		input.nextLine();	/* 清除缓冲区 */

		System.out.printf ( "程序结束.." );
		System.exit(0);	/* 第一次执行到这里就退出整个程序 */
	}
}

        demo:

C:\Users\byme\javaTest>javac test.java

C:\Users\byme\javaTest>java test

请输入一个数字 <<< 0
根据这个值输出以下加法表 >>>
        0 + 0 = 0

输入 y 继续 <<< y

请输入一个数字 <<< 1
根据这个值输出以下加法表 >>>
        0 + 1 = 1
        1 + 0 = 1

输入 y 继续 <<< y

请输入一个数字 <<< 2
根据这个值输出以下加法表 >>>
        0 + 2 = 2
        1 + 1 = 2
        2 + 0 = 2

输入 y 继续 <<< y

请输入一个数字 <<< 3
根据这个值输出以下加法表 >>>
        0 + 3 = 3
        1 + 2 = 3
        2 + 1 = 3
        3 + 0 = 3

输入 y 继续 <<< y

请输入一个数字 <<< 4
根据这个值输出以下加法表 >>>
        0 + 4 = 4
        1 + 3 = 4
        2 + 2 = 4
        3 + 1 = 4
        4 + 0 = 4

输入 y 继续 <<< y

请输入一个数字 <<< 5
根据这个值输出以下加法表 >>>
        0 + 5 = 5
        1 + 4 = 5
        2 + 3 = 5
        3 + 2 = 5
        4 + 1 = 5
        5 + 0 = 5

输入 y 继续 <<< y

请输入一个数字 <<< 6
根据这个值输出以下加法表 >>>
        0 + 6 = 6
        1 + 5 = 6
        2 + 4 = 6
        3 + 3 = 6
        4 + 2 = 6
        5 + 1 = 6
        6 + 0 = 6

输入 y 继续 <<< y

请输入一个数字 <<< 20
根据这个值输出以下加法表 >>>
        0 + 20 = 20
        1 + 19 = 20
        2 + 18 = 20
        3 + 17 = 20
        4 + 16 = 20
        5 + 15 = 20
        6 + 14 = 20
        7 + 13 = 20
        8 + 12 = 20
        9 + 11 = 20
        10 + 10 = 20
        11 + 9 = 20
        12 + 8 = 20
        13 + 7 = 20
        14 + 6 = 20
        15 + 5 = 20
        16 + 4 = 20
        17 + 3 = 20
        18 + 2 = 20
        19 + 1 = 20
        20 + 0 = 20

输入 y 继续 <<< n
程序结束..
C:\Users\byme\javaTest>

        有没有被惊艳到?!!

/home/fujiayu/esp/esp-idf/tools/check_python_dependencies.py:12: DeprecationWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html import pkg_resources Executing action: flash Running ninja in directory /home/fujiayu/esp/hello_world/build Executing "ninja flash"... [1/5] cd /home/fujiayu/esp/hello_world.../esp/hello_world/build/hello_world.bin hello_world.bin binary size 0x31ee0 bytes. Smallest app partition is 0x100000 bytes. 0xce120 bytes (80%) free. [1/1] cd /home/fujiayu/esp/hello_world..._world/build/bootloader/bootloader.bin Bootloader binary size 0x5290 bytes. 0x2d70 bytes (35%) free. [2/3] cd /home/fujiayu/esp/esp-idf/com...nents/esptool_py/run_serial_tool.cmake esptool esp32s3 -p /dev/ttyACM0 -b 460800 --before=default_reset --after=hard_reset write_flash --flash_mode dio --flash_freq 80m --flash_size 2MB 0x0 bootloader/bootloader.bin 0x10000 hello_world.bin 0x8000 partition_table/partition-table.bin esptool.py v4.6.2 Serial port /dev/ttyACM0 A fatal error occurred: Could not open /dev/ttyACM0, the port doesn't exist CMake Error at run_serial_tool.cmake:66 (message): /home/fujiayu/.espressif/python_env/idf5.2_py3.8_env/bin/python;;/home/fujiayu/esp/esp-idf/components/esptool_py/esptool/esptool.py;--chip;esp32s3 failed. FAILED: CMakeFiles/flash cd /home/fujiayu/esp/esp-idf/components/esptool_py && /usr/bin/cmake -D IDF_PATH=/home/fujiayu/esp/esp-idf -D "SERIAL_TOOL=/home/fujiayu/.espressif/python_env/idf5.2_py3.8_env/bin/python;;/home/fujiayu/esp/esp-idf/components/esptool_py/esptool/esptool.py;--chip;esp32s3" -D "SERIAL_TOOL_ARGS=--before=default_reset;--after=hard_reset;write_flash;@flash_args" -D WORKING_DIRECTORY=/home/fujiayu/esp/hello_world/build -P /home/fujiayu/esp/esp-idf/components/esptool_py/run_serial_tool.cmake ninja: build stopped: subcommand failed. ninja failed with exit code 1, output of the command is in the /home/fujiayu/esp/hello_world/build/log/idf_py_stderr_output_21690 and /home/fujiayu/esp/hello_world/build/log/idf_py_stdout_output_21690
07-07
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

燃吹

呜呜呜没钱钱吃饭了……

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值